线程的引入
在操作系统中引入线程,是为了减少程序并发执行时所付出的时空开销,使操作系统具有更好的并发性,为了说明这一点,先来回顾一下进程的两个基本属性:
进程是一个拥有资源的独立单位。
进程同时又是一个可以被处理器独立调度和分配的单元。
为了使进程能并发执行,操作系统还必须进行一系列的操作,如进程的创建、撤销进程和进程切换。在进行这些操作时,操作系统要为进程分配资源及回收资源,为运行进程保存现场信息,这些工作都需要付出较多的时空开销。为了使多个程序更好地并发执行,并尽量减少操作系统的开销,操作系统设计者考虑将进程的两个属性分离开来,让线程去完成第二个基本属性的任务,而进程只完成第一个基本属性的任务。
线程的定义
线程本身不能单独运行,只能包含在进程中,只能在进程中执行。线程自己基本上不拥有资源,只拥有一点在运行时必不可少的资源,但它可以与同属一个进程的其他线程共享该进程资源。多线程是指一个进程中有多个线程,这些线程共享该进程资源。如果一个线程修改了一个数据项,其他线程可以了解和使用此结果数据。一个线程打开并读一个文件时,同一进程中的其他线程也可以同时读此文件。