linux c 信号量与共享内存问题 多客户端同时接受消息 5

服务端与客户端实现共享内存与信号量自锁解锁功能3个锁客户端与服务端锁,还有p,v锁;但是出现只能单客户端发,单客户端接受;如果多客户端等待接受,就是一个一个客户端收到消息... 服务端与客户端实现共享内存 与信号量 自锁解锁功能 3个锁 客户端与服务端锁 ,还有p,v锁;但是出现只能单客户端发,单客户端接受;如果多客户端等待接受,就是一个一个客户端收到消息;应实现 多客户端同时接受到消息;有什么好的办法? 展开
 我来答
dut_wish
2014-08-13 · TA获得超过1634个赞
知道小有建树答主
回答量:301
采纳率:0%
帮助的人:510万
展开全部
假设服务器的守护进程为D,D维护着一张广播链表。假设链表元素为
struct BEntry{
pid_t pid; //服务器子进程id
mqd_t mqd; //消息队列描述符或者其他IPC手段也可以
};
每次有客户端连上来,做fork的时候就把IPC手段建立好,不管用管道,或者消息,或者共享内存都大同小异,设客户端连上来fork产生的服务器子进程为Subn n为下标。

然后如果要广播消息,就让Subn通知D(可以用广播链表里的IPC手段,也可以另建),然后由D广播消息给各个Subm, Subx,这些Sub进程再发给客户端,这样可以同时广播,效率比较高。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式