C11 锁
程序员文章站
2022-07-14 08:07:04
...
1.mutex
头文件是<mutex>,mutex是用来保证线程同步的,防止不同的线程同时操作同一个共享数据。
但是使用mutex是不安全的,当一个线程在解锁之前异常退出了,那么其它被阻塞的线程就无法继续下去。
用法:lock()
unlock
2.std::lock_guard
使用lock_guard则相对安全,它是基于作用域的,能够自解锁,当该对象创建时,它会像m.lock()一样获得互斥锁,当生命周期结束时,它会自动析构(unlock),不会因为某个线程异常退出而影响其他线程
用法
#include <mutex>
std::mutex kMutex;
void function() {
// 构造时自动加锁
std::lock_guard<std::mutex> (kMutex);
// 离开局部作用域,析构函数自动完成解锁功能
}
参考
https://www.cnblogs.com/pjl1119/p/9715782.html
https://blog.svenhetin.com/std-lock_guard-jian-jie/
上一篇: C11新特性
下一篇:
C11并发 std::promise