多线程——状态

多线程的生命周期有四种状态

就绪

线程能够运行,但是在等待CPU分配,如时间片,和进程类似

运行

线程正在运行,在多核系统中,可能同时有多个线程在运行

阻塞

线程在等待CPU以外的其他条件,如内存资源。

终止

线程从启动函数中返回,或者调用pthread_exit函数,或者被取消

进入阻塞

阻塞不管是进程还是线程都是比其他状态要理解更多一点的概念

线程运行过程中,可能由于各种原因进入阻塞状态:

a.线程通过调用sleep方法进入睡眠状态;

b.线程调用一个I/O上被阻塞的操作,即该操作在输入输出操作完成之前不会返回到它的调用者;

c.线程试图得到一个锁,而该锁正被其他线程持有;

d.线程在等待某个触发条件;

资源回收有关的状态:

如果从资源回收的角度考虑,线程还有两种状态:joinable与detached

如果线程处于joinable状态(非分离状态),则只能只能被创建他的线程等待终止。

如果线程是detached状态(分离态),则它没有被其他的线程所等待,自己运行结束了,线程也就终止了,马上释放系统资源。

一个线程在创建时,默认是可连接态,即非分离态。

分离属性用来决定一个线程以什么方式来终止自己。

非分离:线程结束之后,需要主线程调用pthread_join()回收资源

分离:一个线程结束时就立即释放它的所占有的所有系统资源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值