如果我想抓住多个锁而不会遇到死锁的危险,我可以使用std :: lock函数:
int data1,data2; std::mutex m1,m2; std::unique_lock<std::mutex> lock1(m1,std::defer_lock); std::unique_lock<std::mutex> lock2(m2,std::defer_lock); std::lock(lock1,lock2); // guaranteed deadlock-free // work with data1 and data2
但是如果我想在指定的时间内获取锁,否则超时?是否有理由没有像try_until这样的锁,类似于wait_until的期货和条件变量?
解决方法
Why no timeout support in std::lock?
因为没人提出.
>因为这个领域是如此有争议,所以建议越少,越有可能被接受.
>因为我们害怕,如果我们标准化一切,你会觉得无聊.
这是为读者留下的一个练习.
嗯…我没有想法…