虽然我在Borland C++应用程序的背景下引用了它,但是这个问题既是Borland特有的,也是通用的。在一个Borland C++项目中,我观察到用户与GUI的交互(比如菜单项点击)的优先级低于使用Synchronize()委托给主线程的任务,尽管用户交互正在发生几毫秒前。当主线程可用时,首先完成委托任务,然后执行与用户交互对应的操作。工作者线程将任务委托给主线程,并使用Synchronize()等待任务完成。所以我们可以将Synchronize()等同于SendMessage()。线程消息之间的优先级?
我认为用户交互作为消息队列中的消息排队,同样应该是委派任务的情况。但是,该任务如何首先执行?消息之间是否有优先权?
这对于Borland的实现非常具体。但是,消息循环首先分派来自同步队列的任何请求,然后继续清空消息队列是很常见的。 –
@Hans感谢您的回复。我对文本进行了一些修改 - “主线程可用时”。不知道这是否重要,以防万一。 –