Перейти к содержимому
Тест · Многопоточность: обзор · урок 6 из 10

Тест — два мьютекса в разном порядке

Что может случиться, если два потока одновременно вызовут lock_both(a, b) и lock_both(b, a)?

C++
#include <mutex>

std::mutex a;
std::mutex b;

void lock_both(std::mutex& first, std::mutex& second) {
    std::lock_guard<std::mutex> g1(first);
    std::lock_guard<std::mutex> g2(second);
}