Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多线程/分叉服务器守护程序的模型 我正在开发一个C++数据库连接的Linux守护进程,它将充当一些联网控制器设备的“服务器”。它必须具有某种形式的并发性,才能同时为多个设备提供服务。服务器将侦听传入的连接,并为每个连接的设备执行fork/thread/select()/任何操作。此连接应保持打开状态,直到断开或关闭。客户端不是多线程的,因此一次只能有一个连接_C++_Linux_Multithreading_Daemon - Fatal编程技术网

多线程/分叉服务器守护程序的模型 我正在开发一个C++数据库连接的Linux守护进程,它将充当一些联网控制器设备的“服务器”。它必须具有某种形式的并发性,才能同时为多个设备提供服务。服务器将侦听传入的连接,并为每个连接的设备执行fork/thread/select()/任何操作。此连接应保持打开状态,直到断开或关闭。客户端不是多线程的,因此一次只能有一个连接

多线程/分叉服务器守护程序的模型 我正在开发一个C++数据库连接的Linux守护进程,它将充当一些联网控制器设备的“服务器”。它必须具有某种形式的并发性,才能同时为多个设备提供服务。服务器将侦听传入的连接,并为每个连接的设备执行fork/thread/select()/任何操作。此连接应保持打开状态,直到断开或关闭。客户端不是多线程的,因此一次只能有一个连接,c++,linux,multithreading,daemon,C++,Linux,Multithreading,Daemon,该项目要求设备能够使用将被处理的命令(通常包括数据库查询)联系“服务器”,并反过来向另一个联网设备发送命令。数据库查询将确定与哪些其他客户机对话。然后,我必须找到它连接到哪个进程或线程,并通过与该线程的现有连接与设备通信 想象一下,在一台设备上进行某种形式的“授权”,导致另一台设备接收命令并执行某些操作。我不能只是在设备之间“点对点”发送命令,因为一切都必须记录在服务器上,数据库查询可能是必要的 我对线程/进程之间的通信感到困惑。我希望为客户端(即设备)创建一个类,并在每个单独的进程或线程中创建

该项目要求设备能够使用将被处理的命令(通常包括数据库查询)联系“服务器”,并反过来向另一个联网设备发送命令。数据库查询将确定与哪些其他客户机对话。然后,我必须找到它连接到哪个进程或线程,并通过与该线程的现有连接与设备通信

想象一下,在一台设备上进行某种形式的“授权”,导致另一台设备接收命令并执行某些操作。我不能只是在设备之间“点对点”发送命令,因为一切都必须记录在服务器上,数据库查询可能是必要的

我对线程/进程之间的通信感到困惑。我希望为客户端(即
设备
)创建一个类,并在每个单独的进程或线程中创建一个对象。我知道使用fork()时使用命名管道和共享内存,以及与其他线程通信的技术,但我担心同步和潜在的稳定性问题。我对fork及其易用性和简单性感到兴奋,直到我遇到这个问题。稳定是首要问题

我这样做完全错了吗?我的描述并不是很好,所以你们中那些认为自己能够提供帮助的人可能必须先问问题。也许有人刚刚完成了像这样的建筑


我为这个问题的长度和相当模糊的性质道歉。这更多的是一个设计问题,而不是一个直接的、可回答的问题。我不确定它是属于程序员还是属于这里。如有必要,请随意移动

感谢所有试图挽救我理智的人


更新:如果我在使用Boost.Asio,有人能给我一个简单的解释/示例代码或给我指出正确的方向吗?

你应该看看Boost::Asio和活动对象模式。
在boost'Con 2010上有一段关于这个主题的精彩视频/演讲,你可以在blip上找到。tvB

你应该看看boost::Asio和活动对象模式。 在2010年boost'Con大会上有一段关于这个主题的精彩视频/演讲,你可以在blip.tvB上找到