Задачи на многопоточность в C++. Часть 3
Защитите счётчик через std::mutex.
Используйте std::lock_guard.
Сделайте безопасное добавление в std::vector из потоков.
Используйте std::atomic<int>.
Сделайте флаг остановки через std::atomic<bool>.
Дождитесь всех потоков в vector<thread>.
Сравните гонку данных с мьютексом и без.
Сделайте producer-consumer с мьютексом.
Сделайте пул из 4 потоков.
Сделайте graceful shutdown потоков.