时使用用于像管道或双工等消息队列?

的同步单纯共享内存和信号灯的IPC机构
有帮助吗?

解决方案

如果我对你的问题的理解是正确的,它是复式。

使用共享存储器,这两个过程可以进行通信是双向的,而不是仅仅用一个作为阅读器和一个作为作家。管道只允许读出或写入,但可以通过使用两个管(尽管消息队列是一个更好的选择)克服这一点。

其他提示

一个信号灯的工作原理是这样的... PROC A:“是可用的资源?”旗语= -2是。旗语++ PROC B: “是资源...” 旗语= -1是。旗语++ PROC C: “是资源...” 信号量= 0号(什么也没有发生)

在这一点上,PROC C可排队(取决于您的API,这可能是一个繁忙的循环,也可能是一个回调,或者你可能只是产生一个等待线程和写自己的回调)

PROC A: “IM完成” 信号 - ;

PROCÇ会注意到,信号可通过大概类似于我前面提到的一些东西。

我写了这一切,原因是这样我就可以说,它的两个。这就像在你可以等待资源(信号量控制共享内存)触发一些动作,甚至一个实际的系统消息,当他们获取资源的线程消息队列。或者你可以只忙等待,直到它完成,这将是像管道。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top