2011-05-05 86 views
1

我正在开发在C数据库连接的Linux守护++将充当“服务器”对于某些网络控制器设备。它必须具有某种形式的并发才能同时为多个设备提供服务。服务器将侦听每个连接设备的传入连接和fork/thread/select()/无论什么。此连接应保持打开状态,直到它断开或关闭。客户端不会是多线程的,所以它们一次只能有一个连接。模型多线程/叉服务器守护程序

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

认为,一些形式的“授权”的波及另一装置接收命令,做一些事情。我不能只在设备之间发送“点对点”命令,因为所有事情都必须记录在服务器上,并且数据库查询可能是必需的。

我通过线程/进程之间的通信困惑。我预计有一个客户端类(即Device),并在每个单独的进程或线程中创建一个对象。我知道使用fork()的命名管道共享内存,以及与其他线程通信的技术,但我担心同步和潜在的稳定性问题。在我遇到这个问题之前,我对fork和它的易用性和简单性感到兴奋。稳定性是排名第一的关注点。

我这样做完全错了吗?我的描述并不是很好,所以那些认为你可能会提供帮助的人可能首先会提出问题。也许有人刚刚完成这样的东西...


我对这个问题的长度和相当模糊的性质表示歉意。这更多的是设计问题,而不是直接的,可回答的问题。我不确定它是否属于程序员或者是在这里。如有必要,随意移动。

谢谢大家谁试图救我的理智。

更新:如果我为此使用Boost.Asio,任何人都可以给我一个简短的解释/示例代码或指向正确的方向吗?

回答

1

你应该ahve看看的boost ::短耳,并在活动对象patterm。 在boost'Con 2010上有一个很棒的视频/演讲,你可以在blip.tvB上找到

+0

链接:http://boostcon.blip.tv/file/4171562/ – 2011-05-05 04:49:49

+0

谢谢!看起来很有希望。 – Smurf64 2011-05-05 20:40:05