免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6630 | 回复: 8
打印 上一主题 下一主题

多个线程write pipe管道是否线程安全? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-04-05 09:42 |只看该作者 |倒序浏览
RT ...............

论坛徽章:
0
2 [报告]
发表于 2012-04-05 10:44 |只看该作者
小于或等于 PIPE_BUF 字节的 write 一定是原子操作,超过这个值的不一定。

POSIX 规定 PIPE_BUF 至少是 512。

论坛徽章:
0
3 [报告]
发表于 2012-04-05 12:38 |只看该作者
变异老鼠 发表于 2012-04-05 10:44
小于或等于 PIPE_BUF 字节的 write 一定是原子操作,超过这个值的不一定。

POSIX 规定 PIPE_BUF 至少是  ...


正解。但是我不记得这个最小写单元是多少了。。。

论坛徽章:
0
4 [报告]
发表于 2012-04-05 13:29 |只看该作者
好谢谢了, 我只写一个字节, 作为通知.....看来是安全的了....

论坛徽章:
1
白羊座
日期:2013-09-18 22:02:26
5 [报告]
发表于 2012-04-06 12:50 |只看该作者
试试用pread和pwrite

论坛徽章:
0
6 [报告]
发表于 2012-04-06 13:19 |只看该作者
通用办法:共享内存+共享mutex+管道.

论坛徽章:
0
7 [报告]
发表于 2012-04-06 13:21 |只看该作者
先写,出现问题再改拉倒

论坛徽章:
0
8 [报告]
发表于 2012-04-06 17:33 |只看该作者
file3 发表于 2012-04-06 12:50
试试用pread和pwrite


管道不能 seek……

论坛徽章:
0
9 [报告]
发表于 2012-04-08 16:54 |只看该作者
变异老鼠 发表于 2012-04-05 10:44
小于或等于 PIPE_BUF 字节的 write 一定是原子操作,超过这个值的不一定。

POSIX 规定 PIPE_BUF 至少是  ...

PIPE_BUF这个值可以用ulimit -p查看的。linux默认的是8。但是这里的单位不是byte这里的单位是512bytes。所以默认的大小4096的。只要你不写超过这么大那他肯定就是原子的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP