std::recursive_mutex, пока каждый lock парен с unlock. Вложенная функция снова возьмет тот же замок и увеличит общее.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpThRm 539 of 696 menu
◀ ▶

Рекурсивный мьютекс в C++

Повторный захват тем же потоком разрешает std::recursive_mutex, пока каждый lock парен с unlock.

Вложенная функция снова возьмет тот же замок и увеличит общее значение:

#include <iostream> #include <mutex> #include <thread> int main() { int depth = 0; std::recursive_mutex mx; auto inner = [&]() { mx.lock(); ++depth; mx.unlock(); }; std::thread worker([&]() { mx.lock(); inner(); mx.unlock(); }); worker.join(); std::cout << depth << "\n"; return 0; }

В одном std::thread дважды вызовите lock на std::recursive_mutex и столько же unlock. Выведите 1 после успешного прохода.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить