C++mutex临界区的错误使用(C++多线程相关)

临界区可用于解决不同线程不同变量之间的相互读取
用头文件mutex引入
可以定义为类的成员函数来控制成员变量的增加与减少但完全不推荐,通过lock()和unlock()来保证区间代码只有一个线程运行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
但是写成成员函数容易用错,代码的可读性大大降低,也有可能上锁之后而忘记解锁造成程序崩溃。
所以用mutex有的实现会让程序崩溃,以下是两次调用mutex的情况:
在这里插入图片描述
即使完全保证一次lock()后会启用一次unlock()也还是会有问题,如果在锁定区间抛出异常了就会导致程序卡死
在这里插入图片描述
当程序代码中有用抛出异常时会让代码变得特别烦琐,应该不知道是否该在抛出异常的时候进行解锁操作:
在这里插入图片描述

发布了137 篇原创文章 · 获赞 33 · 访问量 1600

猜你喜欢

转载自blog.csdn.net/qq_39885372/article/details/103956718