【发布时间】:2011-02-01 18:15:56
【问题描述】:
在一个 linux 应用程序中,我使用管道在线程之间传递信息。
使用管道背后的想法是我可以使用 poll(2) 一次等待多个管道。这在实践中效果很好,而且我的线程大部分时间都在休眠。他们只有在有事可做时才会醒来。
在用户空间中,管道看起来就像两个文件句柄。现在我想知道这样的管道在操作系统端使用了多少资源。
顺便说一句:在我的应用程序中,我不时地只发送单个字节。将我的管道想象成简单的消息队列,允许我唤醒接收线程,告诉它们发送一些状态数据或终止。
【问题讨论】:
-
Posix 指定的是管道接口,而不是实现,这就是“权重”的来源。
-
多少频道?每秒多少条消息?数百?百万?使用多种技术(从 IPC 消息队列到管道到 UNIX 套接字等)制作一个简单的原型并进行比较。