【发布时间】:2014-06-09 02:47:19
【问题描述】:
当获取多个互斥锁(或使用 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 是否计划了避免死锁的函数?
【问题讨论】: