我需要阻塞,直到我的管道之一有数据要读取。
我尝试过 WaitForMultipleObjects 但它只是立即返回说其中一个管道有数据。管道上的后续 ReadFile 会阻塞。
我无法使用 PeekNamedPipe,因为我需要阻塞直到数据可用,并且在带有睡眠的循环中进行查看会因睡眠而导致延迟反应。
这段代码是跨平台的,在 Linux 上一切都工作得很好,因为我可以在一组 fifo fd 上使用 Select,然后从 select 返回时准备好的那个中读取,但是在 Windows 上似乎没有任何等效的东西。
我看到很多人说你必须使用读/写的重叠操作,但这是否需要我循环并尝试读取每个管道?
是否没有任何单个阻塞操作会阻塞直到其中一个管道中有数据为止?