线程的资源回收
int pthread_join(pthread_t thread, void **retval);
功能:
等待线程结束
参数:
@thread --- 线程tid
@retval --- 用来保存,退出状态值,所在空间的地址
返回值:
成功 0
失败 错误码
注:
线程退出时,可以带出退出状态值,
但是传的是,退出状态值对应空间的地址
int pthread_cancel(pthread_t thread);
功能:
发送 取消的请求
参数:
thread //表示要发送的线程的tid号
返回值:
成功 0
失败 错误码
1.创建 和 调度
线程
创建速度快
调度速度快
//并发程度 更高
//2. 安全性
线程
好处:
共享了进程的数据空间
共享数据方面 方便
缺点:
安全性不好 //
带来资源竞争 //专门的技术 解决资源竞争 --- 互斥 同步
进程
进程空间相互独立
好处,
安全性好
缺点:
进程间共享数据不方便 //进程间通信 (管道,信号,共享内存)
线程间的资源竞争:
共享资源: 临界资源
临界区 : 访问共享资源(临界资源)那段代码
机制:
互斥锁
互斥 排他性 --- 要么不访问 要访问就是一次完整操作 (原子操作)
锁 //
//软件层面上的锁
//锁的操作机制
框架:
定义互斥锁 ==》初始化锁 ==》加锁 ==》解锁 ==》销毁
**** *** ***
定义互斥锁:
pthread_mutex_t mutex;
互斥锁类型 互斥锁变量 内核对象
初始化锁
pthread_mutex_init(); //初始化一把锁
加锁 //加锁 加在 要访问临界资源的地方
pthread_mutex_lock(); //上锁
解锁
pthread_mutex_unlock(); //解锁 临界资源访问之后就解开
销毁
pthread_mutex_destroy();//销毁一把锁