0 为什么使用多线程
实际上,操作系统的多进程实现了多任务并发执行,程序的多线程实现了进程的并发执行。多任务、多进程、多线程的前提都是要求操作系统提供多任务、多进程、多线程的支持。从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。
那么何时会用到多线程呢?大多情况下,要用到多线程的主要是需要处理大量的IO操作或处理数据需要花大量的时间等,比如:读写文件、遥感数据的接收、处理、显示、保存等。
1 进程和线程
1.1 进程Process
1.1.1 什么是进程
进程是操作系统中对正在运行程序的一个抽象。一个进程是某类型的一个活动,它有程序、输入、输出以及状态。单个处理器可以被若干进程共享,它使用某种调度算法决定何时停止一个进程的工作,并转而为另一个进程提供服务。进程可以分2种类型:
1)前台进程:同用户交互并且替他们完成工作的那些进程。
2)后天进程(守护进程daemon):与特定的用户没用关系,具有某些专门功能的进程,如邮件后台定时检查是否有新邮件的进程。
进程与程序
1)程序是计算机指令的集合,它以文件的形式存储在磁盘上。
进程是一个程序在其自身的地址空间中的一次执行活动。
2)进程是资源申请、调度和独立运行的单位,因此,它使用系统中的运行资源;
程序不能申请系统资源,不能被系统调度,也不能作为独立运行的单位,因此,它不占用系统的运行资源。
1.1.2 进程状态
进程有三种状态:运行、阻塞、就绪。
1)运行:该时刻进程实际占用COU。当一个进程在处理机上运行时,则称该进程处于运行状态。
2)阻塞:也称为等待或睡眠状态,一个进程正在等待某一事件发生(例如请求I/O而等待I/O完成等)而暂时停止运行,这时即使把处理机分配给进程也无法运行,故称该进程处于阻塞状态。
3)就绪:可运行,但因为其他进程正在运行而暂时停止。当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。
对于一个实际的系统,进程的状态及其转换更为复杂。引入新建态和终止态构成了进程的五态模型。