std::lock_guard: объект захватывает мьютекс в конструкторе и отпускает в деструкторе, даже если блок завершился исключением.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpThLg 536 of 696 menu
◀ ▶

Захват std::lock_guard в C++

Захват до конца блока делает std::lock_guard: объект захватывает мьютекс в конструкторе и отпускает в деструкторе, даже если блок завершился исключением.

Создадим guard внутри потока перед увеличением общего счетчика:

#include <iostream> #include <mutex> #include <thread> int main() { int total = 0; std::mutex mx; std::thread worker([&]() { std::lock_guard<std::mutex> guard(mx); ++total; }); worker.join(); std::cout << total << "\n"; return 0; }

Два потока увеличивают int под std::lock_guard<std::mutex>. Выведите сумму после join.

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