Mr.*_*son 26 c++ multithreading mutex c++11
有没有一种方法,我可以告诉std::lock_gaurd打电话try_lock,而不是lock当它获取该互斥锁?
我能想到的唯一方法是使用std::adopt_lock:
if (!_mutex.try_lock())
{
// Handle failure and return from the function
}
std::lock_guard<my_mutex_class> lock(_mutex, std::adopt_lock);
Run Code Online (Sandbox Code Playgroud)
是否有针对我的问题的内置解决方案,而不是明确获取锁定,然后lock_guard负责释放它?
T.C*_*.C. 53
基本设计不变量lock_guard是它始终保持锁定.这可以最大限度地减少开销,因为它的析构函数可以无条件地调用unlock(),并且它不必存储额外的状态.
如果您需要try-to-lock行为,请使用unique_lock:
std::unique_lock<std::mutex> lock(_mutex, std::try_to_lock);
if(!lock.owns_lock()){
// mutex wasn't locked. Handle it.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8055 次 |
| 最近记录: |