我打算使用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