Захват 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.