使用来自不同线程的posthreadmessage()

我不太确定这是否是正确的做法(即业余爱好者)。 我想发布消息到工作线程循环GetMessage()并根据消息做一些事情。 我明白我必须使用该工作线程的句柄posthreadmessage()。

这是我的问题:

我可以用吗

PostThreadMessage(idWorkerThread, WM_COMMAND, (WPARAM)0, (LPARAM)0)) 

来自多个不同的线程? 我知道这可能会导致消息写入工作线程消息队列在同一时间从不同的线程。 这是一个问题还是很好? 本质上我想要一个N> 1的线程间通信。

PostThreadMessage是线程安全的,所以你会没事的。 这是一个很好的做法。 另一个选择是使线程等待事件或条件变量,并具有将事件推送到队列并进行适当同步的功能。