如何避免使用lock_guard锁定
How to avoid locking using lock_guard?
https://en.cppreference.com/w/cpp/thread/lock_guard
(构造函数)
构造一个lock_guard,可以选择锁定给定的互斥锁
如果它是可选的,那么避免锁定的方法是什么?
这是避免lock_guard
构造函数锁定给定mutex
的一种方法:
std::mutex mtx;
mtx.lock();
std::lock_guard<std::mutex> lck(mtx, std::adopt_lock);
目的是允许您的lock_guard
拥有您已经锁定的mutex
。
寄件人: https://en.cppreference.com/w/cpp/thread/lock_guard/lock_guard
显式lock_guard( mutex_type & m ); (1) (自C++11起)
lock_guard( mutex_type& m, std::adopt_lock_t t ); (2) (自C++11起)
lock_guard( const lock_guard&) = 删除; (3) (自C++11起)
获取给定互斥锁 m 的所有权。1) Effectively calls m.lock(). The behavior is undefined if m is not a recursive mutex and the current thread already owns m. 2) Acquires ownership of the mutex m without attempting to lock it.
如果当前线程不拥有 m,则未定义该行为。
3) 删除复制构造函数。
如果在lock_guard对象之前销毁 m,则行为未定义。
相关文章:
- 如何找到锁定Linux futex的C++行
- G锁定铸造到基础上会释放模拟行为
- 如何检查线程是否锁定
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 我应该在锁定TBitmap画布后解锁它吗
- C++ 11 中的锁定是否保证访问数据的新鲜度?
- 在两个线程上读/写 64 位,无互斥/锁定/原子
- 如何在实时应用程序中锁定线程
- 在 lambda 中锁定 std::shared_ptr 的复制操作
- 使用简单两相锁定的并发程序
- 锁定来自其他线程的类成员
- 他们如何将红外锁定像素转换为镜头前方 1m 的正常平面上的位置
- 同一互斥锁顺序上的锁定和解锁是否一致?
- 共享内存的升压容器是否实现锁定?
- 当只有一个线程主要使用该对象而其他线程很少使用它时,如何最小化该对象的互斥锁锁定?
- 如何在 x86 处理器上实现"锁定添加"
- MCS 锁定实现的问题
- Sqlite3 C++数据库被锁定
- 如果互斥锁被锁定,则安全地跳过任务
- 正在解锁手动未定义/不良设计的锁定guard