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