多线程的生命周期有四种状态
就绪
线程能够运行,但是在等待CPU分配,如时间片,和进程类似
运行
线程正在运行,在多核系统中,可能同时有多个线程在运行
阻塞
线程在等待CPU以外的其他条件,如内存资源。
终止
线程从启动函数中返回,或者调用pthread_exit函数,或者被取消
进入阻塞
阻塞不管是进程还是线程都是比其他状态要理解更多一点的概念
线程运行过程中,可能由于各种原因进入阻塞状态:
a.线程通过调用sleep方法进入睡眠状态;
b.线程调用一个I/O上被阻塞的操作,即该操作在输入输出操作完成之前不会返回到它的调用者;
c.线程试图得到一个锁,而该锁正被其他线程持有;
d.线程在等待某个触发条件;
资源回收有关的状态:
如果从资源回收的角度考虑,线程还有两种状态:joinable与detached
如果线程处于joinable状态(非分离状态),则只能只能被创建他的线程等待终止。
如果线程是detached状态(分离态),则它没有被其他的线程所等待,自己运行结束了,线程也就终止了,马上释放系统资源。
一个线程在创建时,默认是可连接态,即非分离态。
分离属性用来决定一个线程以什么方式来终止自己。
非分离:线程结束之后,需要主线程调用pthread_join()回收资源
分离:一个线程结束时就立即释放它的所占有的所有系统资源