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

2024-12-04 14:10:52
推荐回答(1个)
回答1:

假设服务器的守护进程为D,D维护着一张广播链表。假设链表元素为
struct BEntry{
pid_t pid; //服务器子进程id
mqd_t mqd; //消息队列描述符或者其他IPC手段也可以
};
每次有客户端连上来,做fork的时候就把IPC手段建立好,不管用管道,或者消息,或者共享内存都大同小异,设客户端连上来fork产生的服务器子进程为Subn n为下标。

然后如果要广播消息,就让Subn通知D(可以用广播链表里的IPC手段,也可以另建),然后由D广播消息给各个Subm, Subx,这些Sub进程再发给客户端,这样可以同时广播,效率比较高。