【发布时间】:2013-08-03 21:46:56
【问题描述】:
我有一个创建为重叠的管道句柄。我需要并行读取和写入数据。我怎样才能做到这一点?
Named Pipe Server Using Overlapped I/O 文档页面显示了如何读取和写入多个管道的示例,但“它避免了对单个管道实例的同时操作”。
在 Windows 上使用 C++ 执行此操作的正确方法是什么?我无法提交正确的示例,也无法提供有关该主题的帮助。
当没有数据要读取并且最终我无法使用 WriteFile 写入时,我面临的主要问题是正常的 ReadFile 阻塞。我还没有找到任何方法可以告诉我是否有可以阅读的内容不会阻塞。据我了解,我需要传递 OVERLAPPED 结构,但不知道如何在并行读写一个管道(不多)的情况下使用它。
Synchronous and Overlapped Pipe I/O说的应该是可以的:
重叠操作使一个管道可以同时读取和写入数据,并且单个线程可以同时对多个管道句柄执行 I/O 操作。
【问题讨论】:
-
“我还没有找到任何方法可以告诉我有什么东西可以阅读并且不会阻塞。” - 看看
PeekNamedPipe()。
标签: c++ windows named-pipes overlapped-io