社区
进程/线程/DLL
帖子详情
关于匿名管道阻塞的疑问
hhh_hao
2009-07-22 07:10:31
大家好,
我现在用匿名管道做进程间的通信,
我知道往空的管道中读数据,或往满的管道中写数据,都会造成阻塞。
有没有办法避免这个问题呢,查了一些资料,
发现可以在读的时候先调用PeekNamedPipe()看是否有数据,
那WriteFile的时候怎么解决呢,有什么函数查看管道是否满的吗?
希望有经验的高手帮我解决下这个难题,非常感激。
...全文
374
13
打赏
收藏
关于匿名管道阻塞的疑问
大家好, 我现在用匿名管道做进程间的通信, 我知道往空的管道中读数据,或往满的管道中写数据,都会造成阻塞。 有没有办法避免这个问题呢,查了一些资料, 发现可以在读的时候先调用PeekNamedPipe()看是否有数据, 那WriteFile的时候怎么解决呢,有什么函数查看管道是否满的吗? 希望有经验的高手帮我解决下这个难题,非常感激。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lhy
2009-09-08
打赏
举报
回复
管道本身也不太适合传送大文件。
hxfjb
2009-09-08
打赏
举报
回复
1 这是一个同步和异步操作的问题,管道操作你可以看作是文件操作,在文件操作中会面临同样的问题,所以你可以选择异步函数,比如ReadFileEx和ReadFileEx。
2 管道的默认大小是4K,也就是说,如果你写8K的内容,则写入了4K,然后WriteFile函数阻塞,直到有人把内容读走,然后继续写剩余的4K。
lhy
2009-09-08
打赏
举报
回复
[Quote=引用 10 楼 hhh_hao 的回复:]
还有个问题,父进程创建的管道,并向其写内容,本来是想让子进程去读的,结果父进程去读管道的时候,会读到自己的管道的内容,有没有办法限制呢?
[/Quote]
开两个管道,一个子写父读,一个父写子读
hhh_hao
2009-08-26
打赏
举报
回复
还有个问题,父进程创建的管道,并向其写内容,本来是想让子进程去读的,结果父进程去读管道的时候,会读到自己的管道的内容,有没有办法限制呢?
hhh_hao
2009-07-30
打赏
举报
回复
[Quote=引用 7 楼 nwpulei 的回复:]
管道的好处就是可以传递大量的数据。
他的实现是自动生成一个临时文件。
因此,要想把它装满在读数据太有难度了吧。
[/Quote]
这个开的缓存不大,很容易就满了
周成风
2009-07-26
打赏
举报
回复
这个。。我匿名管道通信就传个字符串什么的。。
如果需要传很多内容,可以考虑自己实现,比如写入文件再读等等。。当然得在效率要求不高的情况下。
nwpulei
2009-07-25
打赏
举报
回复
管道的好处就是可以传递大量的数据。
他的实现是自动生成一个临时文件。
因此,要想把它装满在读数据太有难度了吧。
realsupk
2009-07-24
打赏
举报
回复
为什么一定要用匿名管道呢?
hhh_hao
2009-07-24
打赏
举报
回复
原因我知道,
但是这样会出现就会阻塞,难道就没有办法防止?
做鸡真好吃
2009-07-24
打赏
举报
回复
mark~
hhh_hao
2009-07-24
打赏
举报
回复
那用什么好呢?命名管道?
hhh_hao
2009-07-23
打赏
举报
回复
没人知道吗?
zoulie
2009-07-23
打赏
举报
回复
匿名管道不允许异步操作,所以如在一个管道中写入数据,且缓冲区已满,那么除非另一个进程从管道中读出数据,从而腾出了缓冲区的空间,否则写入函数不会返回
从编程小白到量化宗师之路---高频交易系统编写---精简版期货CTP API开发(含穿透式监管)
这是《编程小白到量化宗师之路---高频交易系统编写---期货CTP高频数据Tick下载(含穿透式监管)》课程的极端精简版本。 原始课程链接: https://edu.csdn.net/course/detail/24783 精简版本对软件开发中的同步,异步,
阻塞
,非
阻塞
,异步的回调和轮询,进行了透彻的讲解,并分析了各种处理模式的优缺点。重点点出了在高频交易系统中的选择(神转折)。精简版本还对《期货CTP高频数据Tick下载程序》进行了简要的讲解,使观众透彻的了解CTP API开发的重点诀窍所在,这也是几乎所有交易系统的通用设计方式。
关于
匿名
管道
阻塞
的
疑问
[问题点数:20分,结帖人hhh_hao] http://bbs.csdn.net/topics/310166627/http://bbs.csdn.net/topics/31
大家好, 我现在用
匿名
管道
做进程间的通信, 我知道往空的
管道
中读数据,或往满的
管道
中写数据,都会造成
阻塞
。 有没有办法避免这个问题呢,查了一些资料, 发现可以在读的时候先调用PeekNamedPipe()看是否有数据, 那WriteFile的时候怎么解决呢,有什么函数查看
管道
是否满的吗? 希望有经验的高手帮我解决下这个难题,非常感激。
匿名
管道
不允许异步操作,所以如在一个
进程间通信之
匿名
管道
(pipe)
本篇博客介绍了进程间通信中常用的一种机制——
匿名
管道
(pipe)。在现代应用程序开发中,进程间通信是一项关键任务,用于实现不同进程之间的数据传输和交互。通过本文,你将深入了解
匿名
管道
的概念、原理和在进程间通信中的应用。
【Linux】进程间通信 --
匿名
管道
的应用
【Linux】
匿名
管道
的应用
【Linux】进程间通信1-
匿名
管道
1
管道
符[|] 创建
匿名
管道
的pipe函数 从内核角度深入理解
管道
代码验证pipe函数
管道
和子进程的先后创建顺序 代码实现父子进程的通信
管道
的特性
进程/线程/DLL
15,471
社区成员
49,181
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章