1、在这里,我们发现,MFC不是调用GetMessage()从线程消息队列中取消息,而是调用PeekMessage()。其原因在于, GetMessage()是一个具有同步行为的函数,如果消息队列中没有消息,GetMessage()会一直阻塞,使得线程处于睡眠状态,直到消息队列中有一条或多条消息,操作系统才会唤醒该线程,GetMessage()才会返回,如果线程处于睡眠状态了,就不会使线程具有MFC所谓的“空闲”状态了;而PeekMessage()则是一个具有异步行为的函数,如果消息队列中没有消息,它马上返回0,不会导致线程处于睡眠状态。
网路摘抄【2】
最新推荐文章于 2024-10-25 16:36:54 发布
博客介绍了MFC不调用GetMessage()从线程消息队列取消息,而是调用PeekMessage()的原因。GetMessage()有同步行为,无消息时会阻塞线程;而PeekMessage()有异步行为,无消息时马上返回0,不会使线程睡眠,可让线程有“空闲”状态。

4228

被折叠的 条评论
为什么被折叠?



