zl程序教程

您现在的位置是:首页 > 

当前栏目

[apue] 管道原子写入量的一个疑问

一个 写入 管道 原子 疑问 apue
2023-06-13 09:11:15 时间

PIPE_BUF定义了管道可原子写入的数据量,在我的系统(CentOS 6.7)上这个值是4096,写了个程序验证了一下,通过三个维度来考察:

N: 生产者数量

M:每个生产者的生产次数

P:每次写入的块数(每块大小为PIPE_BUF)

实验发现,当P<=2时,无论如何提升N与M,都很难检测到(自己没检测到)数据穿插的现象;

而当P提升到3时,N与M很小就可以检测到数据穿插。所以这里有一个疑问:底层的PIPE原子写入的数据量是不是2 * PIPE_BUF ?

否则如何解释上面的现象。

测试代码