【发布时间】:2011-10-02 10:21:46
【问题描述】:
虽然我在 Borland C++ 应用程序的上下文中引用了这个,但这个问题既是 Borland 特有的,也是通用的。
在 Borland C++ 项目中,我观察到用户与 GUI 的交互(比如单击菜单项)的优先级低于使用 Synchronize() 委托给主线程的任务,即使用户交互发生在几毫秒之前。当主线程可用时,首先完成委托的任务,然后执行与用户交互对应的动作。工作线程将任务委托给主线程并使用 Synchronize() 等待任务完成。所以我们可以将 Synchronize() 等同于 SendMessage()。
我相信用户交互在消息队列中作为消息排队,委托任务也应该如此。但是任务是如何先执行的呢?消息之间是否有任何优先级?
【问题讨论】:
-
这是对 Borland 实现非常具体的。但消息循环通常会先调度来自同步队列的任何请求,然后继续清空消息队列。
-
@Hans 感谢您的回复。我对问题文本做了一些改动——“当主线程可用时”。不知道这是否重要,但以防万一。
标签: c++ multithreading c++builder