我打算使用Unix命名管道(mkfifo)进行简单的多进程消息传递。 消息将只是一行文本。FIFO(命名管道)消息障碍
你会让我感到厌恶吗?我应该期待什么障碍?
我已经注意到了这些限制:
- 发送方无法继续进行直到收到消息。
- 接收器被阻塞,直到有一些数据。当我们需要停止阅读时,非阻塞IO将需要 。例如,另一个线程可以要求。
- 接收器可以在一次读取中获得许多消息。这些在退出前必须被处理 。
- 原子消息的最大长度受限于4096个字节。这是Linux上的PIPE_BUF限制(请参见man 7 pipe)。
我将在Python中实现消息传递。但是障碍总的来说是一样的。
您希望同时使用多少个进程?如果您有多个读者,则只有其中一位读者可以看到书面信息,AFAIR。 (在这一个不是100%肯定) – rodion 2009-05-29 17:50:53
@rodion - 是的,它只是在一个阅读器中看到一条消息。 FIFO以这种方式工作。 – 2009-05-29 18:09:30
为什么要阻止问题?我可以看到一个非阻塞写入。当你在等待工作时,我看不到无阻塞的阅读。 – 2009-05-29 18:29:15