线程的概念以及Linux下的使用2

一、本节讲线程在Linux下的使用
1)线程的创建
2)线程的回收与结束
3)取消线程
5)线程间的通信
6)互斥锁
1。线程的创建(pthread_create)
man:

在这里插入图片描述
成功返回0 失败返回EOF
头文件:#include<pthread.h>
参数一:pathread_t * thread 线程ID 一般用tid表示
参数二:const pthread_att_t attr 线程的属性 没有就用NULL
参数三:void
(*start routine)(void ) 线程执行的函数 function 名称参数四:void arg 函数传递的参数
compile and link with -pthread :编译可执行文件时要链接 -l pthread

代码:
在这里插入图片描述
这里main在后面加sleep是因为不加的话主程序直接运行结束后退出,线程还没来的及执行完毕也会退出。
2.线程的回收与结束
线程的回收函数(pthread_join)
man:
在这里插入图片描述
pthread_t thread:线程ID tid
void **retval:线程返回值、自己写想些什么就可以写什么,不过要记住类型强制转换,它是void * 型的 (int *)(char *)
retval可以被线程结束函数所接收

3.线程结束函数(pthread_exit)
//线程结束后必须使用线程回收函数进行资源的回收
在这里插入图片描述
retval:为pthread_join所写的一个retval
可以通过这判断是否线程结束,没用就写NULL
代码:
在这里插入图片描述

4.线程自动回收函数(pthread_detach)
线程结束后自动回收
man:
在这里插入图片描述
pthread_t treda:为线程号
用以下路径查看内存释放情况
ps -eLf|grep +你写的可执行文件名
这样你就可以看到进程ID eg 8888
然后用 top -p 8888
就可以看到了

5.取消线程(pthread_cancel)不让它继续执行,直接结束它
int pathread_cancel(线程ID/tid)
有的线程可以取消有的不可以要自设置
pthread_cancelstate(DISABLE,)不可以取消
pthread_cancelstate(ENABLE,)可以取消
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值