【问题标题】:Sharing message queues among threads (in Windows)在线程之间共享消息队列(在 Windows 中)
【发布时间】:2012-08-28 23:04:46
【问题描述】:

有没有办法在多个线程之间共享一个消息队列,或者读取不同线程的消息队列,而不使用钩子?

【问题讨论】:

  • 你说的是窗口消息,对吧?因为术语“消息队列”经常用于 MSMQ。
  • 是的......但这几乎总是一个坏主意。你为什么不描述你想要做什么?

标签: multithreading winapi


【解决方案1】:

GetMessage 和 PeekMessage 只读取当前线程的消息,不能使用它们读取发送到另一个线程拥有的输入队列的消息。

尝试使用AttachThreadInput 加入线程输入队列,这可能会奏效。

【讨论】:

    【解决方案2】:

    消息队列中的消息可以根据它们所针对的窗口进行区分,但我认为消息不能根据 inteded 线程进行区分——MSG 中没有这些字段结构 - 所以我认为你不能在多个线程上共享一个队列。

    这为您提供了一个非挂钩监控解决方案。

    我很确定您可以查看另一个线程队列,但问题是您基本上是在轮询;所以你会错过消息。

    您对要阅读的主题有任何影响吗?如果是这样,您可以让他们向您转播他们的消息。

    除此之外,我看不出有什么办法。

    【讨论】:

    • 理论上是的,而且我知道你打算这样做,但这不是我正在寻找的解决方案。
    猜你喜欢
    • 2012-12-25
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    相关资源
    最近更新 更多