【问题标题】:Trigger to read from windows pipe触发从 Windows 管道读取
【发布时间】:2014-05-02 05:42:08
【问题描述】:

这是一个非常基本的问题。尝试使用管道编写 IPC 机制。我使用了来自msdn 的简单客户端和服务器示例,它来回发送字符消息。现在我的要求是服务器不断监听来自客户端的命令。在接收到来自客户端的指令后,服务器执行一些操作并返回给客户端。

该示例演示了如何阅读这些内容。但是当有东西进入我的管道时,我需要触发或发出信号,以便我可以在那个时候执行读取操作并退出。专用一个线程来继续阅读看起来效率低下。如果我有 10 个客户端,每个客户端 10 个线程和 10 个读取线程不好。

那么,有没有一种机制可以让我从管道中获取我必须阅读某些内容的通知?

【问题讨论】:

  • 您可以创建单独的线程并使用“PeekNamedPipe”来查找是否可以阅读。

标签: c++ multithreading visual-c++ pipe named-pipes


【解决方案1】:

您可以在管道上使用 IOCP。 ReadFile、WriteFile、TransactNamedPipe 和 ConnectNamedPipe API 可以与管道句柄一起使用。

ReadFileEx 和 WriteFileEx 也可以与完成例程一起使用(不要靠近 hEvent 同步设计),用于管道 I/O。

有关详细信息,请参阅 MSDN。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-08
    • 2020-06-14
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多