互斥锁定顺序 c++11
mutex locking order c++11
我有一个(相当简单的)关于 c++11 中的 std::mutex
的问题:
假设 6 个线程想要使用 std::lock_guard
锁定同一个互斥锁。线程 1 请求锁,之后,线程 2 执行相同的操作,依此类推,直到所有 6 个线程都请求锁。第一个获得锁的线程将使其他 5 个线程阻塞,直到每个线程都可以使用锁。
现在其他 5 个线程是否会按照他们请求的顺序接收锁?即使他们都要求,我们是否可以理所当然地认为线程 2 将是下一个获得锁的线程,或者其中一个线程可能会饿死?
他们将以未定义的顺序获得互斥锁。
我有一个(相当简单的)关于 c++11 中的 std::mutex
的问题:
假设 6 个线程想要使用 std::lock_guard
锁定同一个互斥锁。线程 1 请求锁,之后,线程 2 执行相同的操作,依此类推,直到所有 6 个线程都请求锁。第一个获得锁的线程将使其他 5 个线程阻塞,直到每个线程都可以使用锁。
现在其他 5 个线程是否会按照他们请求的顺序接收锁?即使他们都要求,我们是否可以理所当然地认为线程 2 将是下一个获得锁的线程,或者其中一个线程可能会饿死?
他们将以未定义的顺序获得互斥锁。