如何一次锁定两个资源?

时间:2013-11-17 21:56:18

标签: c multithreading parallel-processing posix mutex

我正试图解决类似餐饮哲学家的问题。我怎样才能锁定两个资源?锁定一个资源然后等待另一个资源不是最佳选择。

我只能使用条件变量和互斥量,但唯一的解决方案是“不是最好的”。

我在用C语言写作。

1 个答案:

答案 0 :(得分:-3)

std::lock可以带两个参数,两个unique_locks。用`std :: defer_lock'参数调用它们:

std::unique_lock<std::mutex> lock_one(mutex_one, std::defer_lock);
std::unique_lock<std::mutex> lock_two(mutex_two, std::defer_lock);
std::lock(lock_one, lock_two);`