多语言展示
当前在线:180今日阅读:126今日分享:42

如何正确使用mutex锁

程序开发中,多线程访问共享数据的时候,为了数据的同步性,修改或者访问数据前需要加锁,修改或访问完数据后,需要解锁,因此,本文将告诉你如何正确使用C++11提供的mutex锁。
工具/原料

C++11

方法/步骤
1

通常的情况下,先调用mutex的函数lock加锁,处理完成数据后,再调用函数unlock释放锁

2

调试运行,输出的打印信息如下图所示,表明正常解锁,并且释放锁

3

如果加锁后,进行数据处理的过程中异常,那么可能就没有解锁,如下图所示,加锁后,访问了空的指针

4

调试运行发现出现异常,并且没有正确的解锁

5

为了防止加锁后处理过程中出现异常或者直接return而没有解锁,可以调用lock_guard来加锁,并且自动解锁

6

从运行结果看,使用lock_guard后,程序可以正常运行

7

最后也可以使用std::unique_lock来实现加锁和自动解锁

注意事项
1

喜欢经验欢迎点赞投票!

推荐信息