首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

16位的非抢占式多任务Windows,任务之间是如何切换运行的

2013-10-21 
16位的非抢占式多任务Windows,任务之间是怎么切换运行的?while (GetMessage (&msg, NULL, 0, 0)){Translat

16位的非抢占式多任务Windows,任务之间是怎么切换运行的?
while (GetMessage (&msg, NULL, 0, 0))
     {
          TranslateMessage (&msg) ;
          DispatchMessage (&msg) ;
     }

当进入到这个循环后,如果调用这个语句的线程的消息队列里没有消息,那么这个while语句不是一直占用cpu时间在循环执行吗?有的书上说是GetMessage()会把控制权交给Windows,这个该怎么理解?


[解决办法]

既然是“非抢占式”,“控制权交给Windows”,系统也 不会调度其他 任务(16位进程叫任务)
[解决办法]
如果没有消息需要处理,确实是不占用 CPU,CPU 可用于其它任务的处理。
[解决办法]
消息 是 操作系统 管的,16位 时,只有当前任务 可以得到消息。
[解决办法]
Yeid 和 ,消息循环,
消息循环就等一会,动一会。
这样干的。

热点排行