【Linux】线程控制

一.线程创建

int pthraed_create(pthread_t *thread,const pthread_attr_t *attr,void*(*start_routine)(void*),void *arg);
		thread:用于获取线程id--线程地址空间在整个虚拟地址空间中的首地址
		attr:设置线程属性,通常置NULL
		start_routine:线程的入口函数
		arg:传递给线程函数的参数
		返回值:0--成功  !0--创建失败--errno

线程中id的讨论:
1.tid:线程地址空间首地址
2.pcb->pid:轻量级进程id
3.pcb->tgid:进程(线程组)id,默认等于首线程id

二.线程终止

return//不能在main函数中return(退出的是进程-导致所有线程退出)
void pthread_exit(void *retval);//退出线程自身,谁调用谁退出
			//retval:线程的退出返回值
int pthread_cancel(pthread_t thread);//取消其他线程;让其他线程退出
			//thread:要取消的线程id

线程退出之后,默认不会释放资源,将退出结果保存在线程独有的地址空间中,因此会造成资源泄露
主线程退出之后,其他线程依然可以正常运行

三.线程等待

int pthraed_join(pthread_t thread,void **retval);
		功能:阻塞等待指定线程退出,通过retval获取返回值

线程等待:等待线程退出,获取退出线程的返回结果,释放此退出线程资源
线程被创建出来,都有一个默认的joinable属性,处于joinable属性的线程退出后,不会自动释放资源,需要被其他线程等待,才能释放资源,如果不等待,则会造成资源泄露

四.线程分离

pthread_detach(pthread_t tid)

线程分离:将线程的joinable属性改为detach属性
线程若处于detach状态,退出将自动回收资源,且不需要被等待
适用场景:对线程返回值不关心

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值