线程概述
- 一个程序中的多个执行路线叫做线程,线程是一个进程内部的控制序列。
- 所有的进程都至少有一个执行线程(初始线程)。
- 初始线程随进程的创建而创建, 其他线程则需要通过显式的函数调用来创建。
进程与线程:
①进程拥有自己的PID和变量,独立的内存单元进行调度,执行(几乎)独立于父进程。
②新线程拥有自己独立的栈(eg.局部变量),但与创建者共享全局变量、文件描述符、信号句柄、当前目录状态。
③独立进程和共享线程使得程序运行效率大大提高。
线程的优缺点
优点:
- 程序并发性
- 多线程适用于大多数应用程序
- 线程切换的代价比进程切换小的多
缺点:
- 变量共享和时序设计需要非常仔细,很容易出现错误
- 调试困难
- 在单CPU系统中速度不一定能够提高
线程的主要状态
(1)就绪态:线程能够运行,正在等待处理机资源。可能刚启动或被其他线程抢占处理器,或从阻塞态恢复。
(2)运行态:正在运行。在多处理机系统中,可能有多个线程处于运行态。
(3)阻塞态:线程由于等待某些条件而无法运行,例如IO、加锁互斥量或其他条件。
(4)终止态:线程从起始函数返回、或调用pthread_ exit()函数、或被取消。