进程内通信 WinRT(消息替换)
Posted
技术标签:
【中文标题】进程内通信 WinRT(消息替换)【英文标题】:Intra-process communication WinRT (messages replacement) 【发布时间】:2012-10-08 06:43:56 【问题描述】:我正在使用 Win32 的 WinRT 端口,但我遇到了线程和消息 (vc++11) 的问题。我只能在 WinRT 中使用线程池或 std::thread ...所以我实现了 std::thread,它似乎可以正常工作,但我该如何在它们之间进行通信线程?是否有其他选择(如 PostMessage() 等)?在 android 端口中,我们可以使用管道,但在 winrt 中没有任何内容:(
谢谢
【问题讨论】:
您混淆了线程和进程的概念。管道仅用于进程之间的通信,在 WinRT 中是不允许的。线程只需要一个线程安全队列。 @HansPassant:不是这样。PostMessage()
用于两者。并且线程安全队列是不够的,你仍然需要一些东西来通知线程(当然,是答案)。
PostMessage() 只是一种使用线程安全队列的方法。 Windows 消息队列。相当受限,最重要的是,在 WinRT 中不可用。
【参考方案1】:
std::conditional_variable 和 std::mutex 和纯 std::deque 应该可以解决问题。
【讨论】:
以上是关于进程内通信 WinRT(消息替换)的主要内容,如果未能解决你的问题,请参考以下文章