pipe为什么要结合epoll使用

在用strace分析未知程序时,发现线程间通讯使用了pipe,pipe本身非常简单,通过调用pipe(int fd[2])得到两个fd,fd[1]用于向管道写入,fd[0]用于读用于读取被写入管道的内容,在read(fd[0])时,本身会阻塞,直到有东西被写入管道,但我发现这个程序中一个线程向管道写入以后,先是唤醒了另一个线程的epoll然后再去读管道,所以不解为什么不直接read等待返回,而一定要介入epoll?进一步理清epoll的作用才知道,因为尽管时一个线程其可能也要处理多个事件,比如event等,所以需要epoll来统一注册回调,哪个事件到了就处理哪个事件,而不是只等在管道read()上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值