@cxm-2016
2016-11-28T10:06:48.000000Z
字数 1098
阅读 2529
C++多线程编程
版本:3
作者:陈小默
声明:禁止商业,禁止转载
为了理解多线程,掌握什么是线程(Thread)和进程(Process)以及它们之间的关系很重要。
进程与程序的主要区别:
1,结构特征:
进程实体 = 程序段 + 数据段 + PCB
其中PCB是进程控制块,其中包含进程的名字(进程ID)、内存和分配资源的指针、寄存器保存区以及进程的优先权。
2,动态性
3,并发性
4,独立性
5,异步性
进程的状态 | 描述 |
---|---|
就绪态(ready) | 进程已获得除CPU以外的所有必要资源。 |
运行态(running) | 进程获得CPU并正在执行。 |
阻塞态(blocked) | 由于发生某些事件导致暂时无法执行,于是放弃CPU。 |
备用(standby) | 从就绪队列中挑选出在处理器上运行的进程,每个处理器同一时刻只能有一个进程处于该状态。 |
空闲/新建(idle/new) | 新创建但是不可运行的进程。 |
挂起(suspend) | 进程被置于静止状态,就绪的进程不接受调度,即使被阻塞的进程的阻塞事件释放仍然不能运行。 |
终止(terminated) | 进程完成任务,并释放资源。 |
进程被置于静止状态,就绪的进程不接受调度,即使被阻塞的进程的阻塞事件释放仍然不能运行。
引入挂起的原因:
创建状态
首先为新进程分配PCB,并写入管理信息;其次,将该进程转换为就绪态并插入就绪队列。
终止状态
进程终结后,将PCB清零并返还给操作系统。
1)调度
当从一个线程切换到另一个线程时不会引起进程调度,除非这两个线程不属于同一个进程。
2)并发性
一个进程中的多个线程之间可以并发执行,能够有效的提高系统资源利用率和吞吐量。
3)拥有资源
进程是资源分配的基本单位,线程是执行的基本单位。
[1]C++面向对象多线程编程.人民邮电出版社.2003-4