亚马逊虚拟主机做网站,西安网页设计师,福州网站制作好的企业,黑龙江省建设造价协会网站今日主要学习线程和线程的互斥锁
pthread_cancel函数
它用于取消一个线程#xff0c;当一个线程收到取消的申请时#xff0c;他不会立即停止#xff0c;而是在下一个取消点处结束运行#xff0c;取消点是程序中一个特定的位置。如果线程在执行一个不可中断的系统调用当一个线程收到取消的申请时他不会立即停止而是在下一个取消点处结束运行取消点是程序中一个特定的位置。如果线程在执行一个不可中断的系统调用他将执行一到调用完成。 pthread_detach函数
可分离属可分离属性 ---子线程运行很久才结束 --- 设置分离属性
功能: 分离线程 参数: thread 要分离的线程的tid 返回值: 成功 0 失败 错误码
总结 1.创建 -- pthread_create 2.执行 -- 线程执行函数 3.退出 -- pthread_exit return //线程执行函数中 pthread_cancel exit() //return 从main 4.资源回收 可结合性 --- pthread_join //这种用于 线程任务较短主线程需要关心子线程状态 可分离性 --- pthread_detach //子程序执行任务较长主线程也不需要关心子线程状态
对比 线程 和 进程
1.线程 vs 进程 线程 CPU执行的最小单位 进程 资源分配和任务调度基本单位
2. 各自特点 (优缺点) //1.创建 和 调度 线程 创建速度快 调度速度快 //并发程度 更高 //2. 安全性 线程 好处:共享了进程的数据空间 共享数据方面 方便 缺点: 安全性不好 // 带来资源竞争 //专门的技术 解决资源竞争 --- 互斥 同步 进程 进程空间相互独立 好处 安全性好 缺点: 进程间共享数据不方便 //进程间通信 (管道,信号共享内存) 互斥锁 定义互斥锁: pthread_mutex_t mutex; 互斥锁类型 互斥锁变量 内核对象 初始化锁 pthread_mutex_init(); //初始化一把锁 参数 mutex //就是要初始化的 互斥锁变量 attr //属性 //NULL 默认属性 --- 普通锁 //读写锁 加锁 //加锁 加在 要访问临界资源的地方 pthread_mutex_lock(); //上锁 解锁 pthread_mutex_unlock(); //解锁 临界资源访问之后就解开 销毁 pthread_mutex_destroy();//销毁一把锁 参数: mutex //要操作的那把锁 线程间的顺序问题: //同步操作
强调的是线程的 顺序问题 信号量 //交通信号灯 //实现一种可以让线程间有序访问临界资源的方式 信号量 --- 可以顺序操作的一把锁