Re:共享内存和信号量

时间:2009-05-14 22:06:38

标签: ipc shared-memory semaphore duplex

IPC机制是否使用共享内存和信号量进行同步,如管道或双工,如消息队列?

2 个答案:

答案 0 :(得分:0)

信号量的工作原理如下...... proc a:“资源是否可用?”信号量= -2是的。旗语++ proc b:“是资源......”信号量= -1是的。旗语++ proc c:“是资源......”信号量= 0号(没有任何反应)

此时,proc c可以排队(取决于你的api,这可能是一个繁忙的循环,或者它可能是一个回调,或者你可能只是产生一个等待的线程并且编写你自己的回调)

proc a:“即时完成”信号量 - ;

proc c会注意到信号量可用,可能与我之前提到的类似。

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

答案 1 :(得分:0)

如果我对您的问题的理解是正确的,那就是双面打印。

使用共享内存,两个进程都可以通过两种方式进行通信,而不仅仅是一个作为读者,一个作为写入者。管道只允许读取或写入,但您可以通过使用两个管道来解决这个问题(尽管消息队列是更好的选择)。