LinuxUnix中C++使用共享内存创建消息队列通信如何实现阻塞效果

LinuxUnix中C++使用共享内存创建消息队列通信如何实现阻塞效果,第1张

有两种函数 一个peek 一个是 get 前面的不阻塞 也就是只要没有数据就返回,后面的阻塞,也就是一直等到队列有数据。

前面的好说,比如说队列que, if(que.isempty()) return

后面的是 while(que.isempty()) 然后 *** 作。

你只在 server 进程中(对应spid==0),调用 open_queue 来打开消息队列,即msqid只在这个进程中有效,在host进程中(对应cpid==0),由于msqid无效,所以无法发送消息。 解决方法:只要把 do { msqid = open_queue(key)} while (msqid == -1) 这段代码移到第一个fork之前,这样所有的进程中的msqid就都指向那个队列了。 还有问题可以baidu hi我,别忘了加分。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8662037.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存