多任务的概念(抢占式任务)
多任务在表面上看,是多个程序在计算机上运行。而实际上,计算机是通过芯片的时钟分配 “时间片” ,为每个程序分配时间,程序在规定的 “时间片” 时间内未完成任务,
则计算机会周期性地中断该程序,随机运行其他程序(也是规定 “时间片” 的时间),以此达到 “同时” 运行的效果。
16位Window下的多任务(非抢占式任务)
早期的 Window 版本,多任务的实现方式并不是分配 “时间片” 方式(抢占式)。
Window 是以消息机制来运行程序,通常程序处于休眠状态,直到收到消息后激活,在处理完该消息后,程序把控制权返回给 Window。任务的切换只发生在一个程序处理
完一条消息后,并把控制权返回给 Window 之后。(非抢占式,也叫 “协同多任务”)如果程序处理一条消息需要很长时间的话,会占用整个 Window。
以下方式可以解决 Window 程序非抢占式:
1、使用 Window 计时器,使程序周期性地接受消息,完成一些周期性的任务
2、使用 PeekMessage 函数,如果程序没有待处理消息,会把控制权返回给 Window(一般程序都使用 GetMessage 函数,从消息队列中获取吓一跳消息)