![](http://hi.csdn.net/attachment/201107/31/0_1312076311qebl.gif)
Windows 毕竟是个消息驱动系统,如果某个执行线程调用::GetMessage 而其消息队列却是空的,这个执
行线程便被冻结,直到再有消息进来为止。冻结的意思就是不管你的优先权有多高,暂时
退出排班行列。执行线程也可能被以::SuspendThread 强制冻结住(::ResumeThread 可以解
除冻结)。会被冻结,表示这个执行线程「要去抓取消息,而执行线程所附带的消息队列中却没有消息」。
如果一个执行线程完全和UI 无关呢?是否它就没有消息队列?倒不是,
从上图中可以看到,不管线程是否跟UI相关,线程的数据结构中都有MessageQueue字段,都可以使用PostThreadMessage给执行线程发消息,但它的程序代码中没有消息循环倒是事实。是的,这种执行线程称为worker thread。