所谓管道的容量,指不消费(读)的情况下,最大能写入的数据量。有两种方式来测试一个管道的容量:
1)使用阻塞写,每次写一个字节,并打印写入的总字节数,最后写入阻塞时,上次打印的就是管道的容量;
2)使用非阻塞写,每次也只写一个字节,直到写入失败(返回-1),打印一次总的写入量,就是管道的容量。
环境:CentOS 6.7
分别使用上述两种方法,测得管道容量:
1) 3112948 字节 (<3MB)
2)8527860 字节 (<8MB)
首先说明一下,系统定义的PIPE_BUF(4096)表示可以一次写入的最大原子数据量,并不是管道容量。
那么问题来了,为什么同步与异步写入,所测得的结果不一样,且相差这么大呢?
原文链接: https://www.cnblogs.com/goodcitizen/p/pipe_capacity_problem.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/381413
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!