API函数详解:进程和线程的理解(1)——多任务函数

    多任务定义了一个操作系统同时运行多个程序的能力。但事实是,理想的多任务系统可以在几个应用程序之间如此快的切换,以至于用户可以认为所有的程序就象同时运行一样(多处理器系统除外)。考虑下面的简单程序。创建一个新的VB项目并在窗体上放一个按钮和一个标签控件,然后在窗体的Click事件中加入代码: Private Sub Command1_Click()
    Dim cnt&
    For cnt& = 1 To 2500
        Label1.Caption = cnt&
        Label1.Refresh
    Next cnt&
End Sub     单击按钮时,标签计数器会显示从1到2500的渐増数。将此程序编译成可执行程序,然后运行该程序的两个实例,并把它们并排。现单击一个程序让它运行,在它计数时,试着单击另一个程序的按钮。此试验的结果和正在运行的操作系统以及用的是16位还是32位的VB有关。这说明了操作系统间在多任务方面的关键性差异。Windows3.x支持一种被称为“非抢先式”也叫“协作式”多任务。在这种多任务中,应用程序尽力与另一个程序进行协作。操作系统分配给CPU一个程序,这个程序完全占用CPU直到它想让给其它的程序为止。在我们示例中的固定循环牢牢占用CPU,阻止了其它程序的运行。如果Windows3.x或Win95(或Windows NT)上使用16位的VB(只要这两个计数器没有被设成在独立的内存空间运行),当一个计数器计数时另一个计数器就会被冻结。它不会计数并且也不能单击它的命令按钮。如果在使用16位VB的Windows95或Windows NT上运行这个计数器程序的示例,同时点击某个32位的应用程序,如开始菜单,会发现那些32位的程序并没有被冻结。如果使用32位的VB来进行这个示例,会出现完全不同的结果。当一个计数器计数的同时点击第二个计数器,第二个计数器会开始全速工作,而第一个计数器会慢下来(但它不会停止,它速度的降低程度与系统给前台应用程序优先权大小有关)。     在示例中的程序保持状态不变,没有退出Click事件或执行了DoEvents命令而释放CPU,那显然地,应有某些另外的机制使应用程序能释放CPU资源。其实,释放CPU资源并不是一件麻烦的事,操作系统会完成这项工作。这是一种称为“抢先式多任务”的多任务形式。在该形式中,CPU的时间是由操作系统专门分配的。当操作系统认为一个应用程序已用完它的时间额度时,它会挂起该程序并保存所有的处理器内部寄存器状态,然后转向下一个程序。应用程序也有能力在任何它不需要CPU的时间时挂起它自身。

上页:API函数详解:XFORM函数 下页:API函数详解:AbortPath函数

Windows API函数大全

Windows API函数首页Windows API函数按字母排列
控件与消息函数硬件与系统函数
设备场景函数绘图函数
位图、图标和光栅运算函数菜单函数
文本和字体函数打印函数
文件处理函数进程和线程函数
Windows消息函数网络函数
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号