程序开发中,多线程访问共享数据的时候,为了数据的同步性,修改或者访问数据前需要加锁,修改或访问完数据后,需要解锁,因此,本文将告诉你如何正确使用C++11提供的mutex锁。
工具/原料
C++11
方法/步骤
1
通常的情况下,先调用mutex的函数lock加锁,处理完成数据后,再调用函数unlock释放锁
2
调试运行,输出的打印信息如下图所示,表明正常解锁,并且释放锁
3
如果加锁后,进行数据处理的过程中异常,那么可能就没有解锁,如下图所示,加锁后,访问了空的指针
4
调试运行发现出现异常,并且没有正确的解锁
5
为了防止加锁后处理过程中出现异常或者直接return而没有解锁,可以调用lock_guard来加锁,并且自动解锁
6
从运行结果看,使用lock_guard后,程序可以正常运行
7
最后也可以使用std::unique_lock来实现加锁和自动解锁
注意事项
1
喜欢经验欢迎点赞投票!
上一篇:lc100差速锁使用方法
下一篇:5位滚轮锁破解图教程