3

最近,我得到了一份工作(C/C++),在 Windows 中使用不同线程之间的消息通信。我用谷歌搜索,发现 Windows 也有一个消息队列,但它与窗口更相关,实际上,我的应用程序中不需要任何窗口。

就像Linux中的消息队列一样,每个线程创建一个消息队列并得到一个消息队列ID,向该ID发送消息,从该ID接收等等,这就是我需要的消息队列。

Windows中是否有类似的机制可以这样工作?

4

1 回答 1

7

您不需要窗口即可在 Windows 上使用消息,任何调用 PeekMessage 或 GetMessage 的线程都会获得一个消息队列,您可以使用PostThreadMessage向其发布消息。

消息应该在同一个进程中正常工作,但如果这是跨进程并且您需要发送超过 size_t*2 的消息,则应该查看其他IPC 机制或使用共享内存和某种类型的锁定构建自己的。Windows 也有MSMQ

您没有指定是否需要确切的 POSIX 接口,无论哪种方式,维基百科都有一个开源替代方案列表......

于 2012-06-12T02:12:07.057 回答