关于匿名管道阻塞的疑问 [问题点数:20分,结帖人hhh_hao] http://bbs.csdn.net/topics/310166627/http://bbs.csdn.net/topics/31

大家好,
我现在用匿名管道做进程间的通信,
我知道往空的管道中读数据,或往满的管道中写数据,都会造成阻塞。
有没有办法避免这个问题呢,查了一些资料,
发现可以在读的时候先调用PeekNamedPipe()看是否有数据,
那WriteFile的时候怎么解决呢,有什么函数查看管道是否满的吗?

希望有经验的高手帮我解决下这个难题,非常感激。


匿名管道不允许异步操作,所以如在一个管道中写入数据,且缓冲区已满,那么除非另一个进程从管道中读出数据,从而腾出了缓冲区的空间,否则写入函数不会返回


1 这是一个同步和异步操作的问题,管道操作你可以看作是文件操作,在文件操作中会面临同样的问题,所以你可以选择异步函数,比如ReadFileEx和ReadFileEx。
2 管道的默认大小是4K,也就是说,如果你写8K的内容,则写入了4K,然后WriteFile函数阻塞,直到有人把内容读走,然后继续写剩余的4K。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值