Назад к задачам
Junior — Senior
8

Анализ безопасности блокировок в функции с двумя mutex

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Провести ревью функции calculation, в которой задействованы два объекта std::mutex.

  1. Оценить, насколько корректно выполнена синхронизация.
  2. Выявить риск взаимоблокировки (deadlock).
  3. Предложить надёжный способ одновременного захвата нескольких мьютексов.
void calculation(std::mutex& mxA, std::mutex& mxB, const std::vector<int>& input) {
    std::lock_guard<std::mutex> lock1(mxA);
    std::lock_guard<std::mutex> lock2(mxB);

    // расчёт данных
}