当获取多个互斥锁(或使用boost,迭代器范围的互斥锁)时,我们可以使用std::lock
或boost::lock
来避免因锁定顺序而导致的死锁。使用Lockable概念有类似的std::try_lock
和boost::try_lock
函数。
还有TimedMutex概念,它将方法try_lock_for
和try_lock_until
添加到try_lock
添加超时语义。是否有针对std::lock
的模拟计划提供死锁避免并支持超时语义(可能是std::try_lock_for(Lockable1& lock1, Lockable2& lock2, LockableN& lockn...)
和std::try_lock_until(Lockable1& lock1, Lockable2& lock2, LockableN& lockn...)
)?
同样,是否为SharedTimedMutex函数lock_shared
函数try_lock_shared
,try_lock_shared_for
,try_lock_shared_until
和{{1}}计划了解锁死锁函数?
答案 0 :(得分:0)
不,我不知道有任何关于添加这些功能的建议。
我不相信过去的提案也有,但我可能在一年前的C ++ 0x过程中错过了。
我认为这些功能的用例比std::lock
和std::try_lock