怎么允许宏(excel如何允许宏)
549
2022-05-29
文章目录
线程同步的概念
一、互斥量
1.1、互斥量概念
1.2、互斥量初始化
1.3、互斥量的销毁
1.4、互斥量的加锁与解锁操作
1.5、回忆锁的语义:尝试锁
1.6、互斥量的操作顺序
二、线程安全版本地CLLogger类
三、互斥量的封装
四、条件变量及其封装
五、事件对象的封装
线程同步的概念
通常,对一个存储单元的访问,要经历三个步骤:
将内存单元中的数据,读入寄存器
对寄存器中的值进行运算
将寄存器中的值,写回内存单元
无锁时出错的情况:
一、互斥量
1.1、互斥量概念
可以通过使用pthread的互斥接口保护数据,确保同一时间里只有一个线程访问数据。
互斥量mutex,本质上就是一把锁:
在访问共享资源前,对互斥量进行加锁
在访问完成后释放互斥量上的锁
对互斥量进行加锁后,任何其他试图再次对互斥量加锁的线程将会被阻塞,直到锁被释放
1.2、互斥量初始化
互斥量在使用前,必须要对互斥量进行初始化,函数原型:
#include
1
2
3
参数与返回值:
mutex:即互斥量,类型是pthread_mutex_t
注意:mutex必须指向有效的内存区域
attr:设置互斥量的属性,通常可采用默认属性,即可将attr设为NULL
成功返回0,出错返回错误码
1.3、互斥量的销毁
互斥量在使用完毕后,必须要对互斥量进行销毁,以释放资源:
#include
1
2
3
参数与返回值:
mutex:即互斥量
成功返回0,出错返回错误码
1.4、互斥量的加锁与解锁操作
在对共享资源访问之前和访问之后,需要对互斥量进行加锁和解锁操作,函数原型:
#include
1
2
3
4
成功返回0
1.5、回忆锁的语义:尝试锁
当使用pthread_mutex_lock时,若已被加锁,则调用线程将被阻塞。有没有办法让线程不阻塞,即实现非阻塞的语义。函数原型:
#include
1
2
3
调用该函数时,若互斥量未加锁,则锁住该互斥量,返回0;若互斥量已加锁,则函数直接返回失败,即EBUSY
1.6、互斥量的操作顺序
定义一个互斥量pthread_mutex_t
调用pthread_mutex_init初始化互斥量
调用pthread_mutex_lock或者pthread_mutex_trylock对互斥量进行加锁操作
调用pthread_mutex_unlock对互斥量解锁
调用pthread_mutex_destroy销毁互斥量
示例3.12(在示例3.8基础之上)
二、线程安全版本地CLLogger类
三、互斥量的封装
四、条件变量及其封装
五、事件对象的封装
linux 任务调度
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。