Назад к задачамПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
7
Анализ и оценка кода с использованием mutex
Компании, где спрашивали:
ГК Адепт
Условие задачи
Необходимо внимательно проанализировать приведённый пример на C++ и выявить возможные проблемы, связанные с синхронизацией через std::mutex и std::lock_guard. Обратите внимание на то, как мьютекс cerr_mutex захватывается в функциях foo и bar, и оцените, существует ли риск взаимоблокировки при вызове bar() из foo(). При обнаружении недостатков предложите корректные варианты исправления.
# include <iostream>
# include <mutex>
std::mutex cerr_mutex;
int bar()
{
std::lock_guard<std::mutex> lock(cerr_mutex);
std::cerr << "bar" << std::endl;
return 42;
}
void foo()
{
std::lock_guard<std::mutex> lock(cerr_mutex);
std::cerr << "foo, bar - " << bar() << std::endl;
}
int main(int argc, char* argv[])
{
foo();
return 0;
}