unix管道多个作家

时间:2011-01-20 04:00:40

标签: unix ipc pipe

如果有多个线程将固定长度数据(比如4字节地址)写入单个管道并且该管道有一个读取器,是否保证读取器按顺序获取字节?换句话说,管道原子是write()吗?

1 个答案:

答案 0 :(得分:5)

http://pubs.opengroup.org/onlinepubs/009695399/functions/write.html

  

原子/非原子:写是原子的   如果整个金额写在一个   操作不与数据交错   来自任何其他过程。这很有用   什么时候有多个作家   将数据发送到单个阅读器。   应用程序需要知道有多大   写请求可以预期   原子地进行。这个最大值是   叫{PIPE_BUF}。本卷的IEEE   标准1003.1-2001没有说明是否   写请求超过   {PIPE_BUF}个字节是原子的,但是   需要写入{PIPE_BUF}或   更少的字节应该是原子的。