系统编程 day12 进程(线程)4

线程资源回收:

函数pthread_join();

功能:等待线程结束

参数1:线程的tid号

参数2:用来保存退出状态值所在的空间地址

返回值:成功返回0,失败返回错误码

注:线程退出时,可以带出退出状态值,传参传的是退出状态值对应的空间地址

方式2:在线程执行函数中return(返回一个地址)

方式3:函数pthread_cancel();

功能:发送取消请求

参数:表示发送的线程的tid号

返回值:成功为0,失败返回错误码

方式4:任何一个线程调用了exit()函数,或者主函数return结束进程,所有线程都会结束

系统自动回收:子线程运行了很久才结束-------设置分离属性

函数:pthread_detach()

参数:要设置分离的线程的tid号

功能:分离线程      返回值:成功返回0,失败返回错误码

--------------------------------------------------------------------------------------------------------------------------------

线程间的资源竞争:

共享资源------临界资源

临界区:访问共享资源的一段代码

解决线程间干扰访问共享资源问题,制造出了一种机制:

互斥锁:

互斥:排他性-------要么不访问,要访问就是一次完整操作(原子操作)

锁:软件层面上的锁

锁的操作机制:

框架:

定义互斥锁-----初始化锁-----加锁-----解锁-----销毁

定义:pthread_mutex_t(互斥锁类型)  mutex(互斥锁变量,内核对象)

初始化:pthread_mutex_init();

参数1:&mutex   参数2:NULL

加锁:pthread_mutex_lock();

参数:&mutex         要加锁加在访问临界资源的地方

解锁:pthread_mutex_unlock();

参数:&mutex         临界资源用完之后就解锁

销毁:pthread_mutex_destroy();

参数:&mutex         主函数最后销毁用完的锁

---------------------------------------------------------------------------------------------------------------------------------总结:锁就是一种线程间都同步机制

互斥锁:保证线程对于共享资源的排他性访问,保证每个线程访问时的原子性操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值