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