线程与进程
使用32位Winodws操作系统时,它能够同事运行几个程序。这种能力称为多任务处理。除了支持多任务,Win32操作系统还支持进程中的多线程处理。
在Win32操作系统中,采用的是抢先式多任务,这意味着程序对cpu的占用时间是有系统决定的。系统为每个程序分配一定的cpu时间,当程序的运行超过规定时间后,系统就会中断该程序并把cpu控制权转交给别的程序。术语多任务其实就是指系统可以同时运行多个进程。进程是应用程序的运行实例,每个进程都有自己私有的虚拟地址空间。
每个进程也可以同时执行多个线程。每个进程都有一个主线程,但可以建立另外的线程。进程中的线程是并行执行的,每个线程占用cpu的时间由系统来划分。可以把线程看成是操作系统分配cpu时间的基本实体,系统不停的在各个线程之间切换。由于系统为每个线程划分的时间片很小(20毫秒左右),所以看上去好像是多个线程在同时运行。
进程中的所有线程共享进程的虚拟地址空间,这意味着所有线程都可以访问进程的全局变量和资源。这一方面为编程带来了方便,但另一方面也容易引起冲突。
虽然在进程中进行费时的工作不会导致系统的挂起,但这会导致进程本身的挂起。所以,如果进程既要进行长期的工作,又要响应用户的输入,那么它可以启动一个线程来专门负责费时的工作,而主线程仍然可以与用户进行交互。