PIPE_BUF定义了管道可原子写入的数据量,在个人系统(CentOS 6.7)上这个值是4096,写了个程序验证了一下,经过三个维度来考察:git
N: 生产者数量github
M:每一个生产者的生产次数测试
P:每次写入的块数(每块大小为PIPE_BUF)atom
实验发现,当P<=2时,不管如何提高N与M,都很难检测到(本身没检测到)数据穿插的现象;ip
而当P提高到3时,N与M很小就能够检测到数据穿插。因此这里有一个疑问:底层的PIPE原子写入的数据量是否是2 * PIPE_BUF ?get
不然如何解释上面的现象。it
测试代码pip