两者都应该使用某种WaitFor...电话。
发布于 2009-12-11 20:35:46
如果您担心线程消息和内核事件之间的性能差异,那么您可能不应该使用线程消息。
Win32线程消息队列是一种最初为Windows16开发的机制-当没有线程时。它们已经成长为可以处理Win32的线程模型,但在其背后,它们是相当复杂的野兽。
这有优点和缺点,缺点很简单,就是它们比其他形式的线程间同步和通信慢得多,而且有更多的限制。对于初学者来说,由于许多windows代码(MessageBox、DoDragDrop等)实现了模态消息循环--有很多时候线程消息可能会丢失。重要的是,不要使用那些从线程接收线程消息的API。**1*在消息队列开始丢弃消息之前,消息队列的大小也有限制,线程消息API (GetMessage)不会导致线程进入可警报状态(因此您不能使用QueueUserAPC)。
线程消息的pro是-只要它们的限制得到尊重-它们是一个非常可靠的预制轮子,可以序列化对线程的调用。如果您发现自己正在为非UI工作线程实现排队机制,为什么要重新发明一个经过良好测试的轮子-使用预先构建的消息队列。
**1*这包括大多数调试宏的实现,比如将弹出一个消息框的ASSERT。
https://stackoverflow.com/questions/1887451
复制相似问题