我在 docs 中找到了unique_lock
可以尝试“以非阻塞方式获取锁”。
unique_lock
的线程是否在尝试以“非阻塞方式”获取锁时未被阻塞?如果是这样,它会优雅地失败吗?会解锁
吗?
此外,由于 notify_one
不抛出,是不是意味着如果不能通知,它也会优雅地失败?
如果 unique_lock
可以设置为不等待成功的 lock
而是优雅地失败并继续优雅地失败以进行 unlock
和 notify_one
,unique_lock
怎么设置成这样?
最佳答案
类似 boost::unique_lock lock(my_lockable, boost::try_to_lock);
应该可以解决问题。
lock.owns_lock()
如果已获取锁,将返回 true。如果它不是获得的,你不应该尝试释放它。
调用 notify_one
应该总是安全的,即使没有条件等待它。
关于c++ - 如何配置为非阻塞unique_lock?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21917817/