Разбираем, что в многопоточном C++ считать «общими данными»: не только переменные в памяти, но и ввод/вывод вроде
std::cout, файлы, внешние сервисы и даже порядок событий. Учимся начинать синхронизацию с договора о владении, использовать границы обмена через
join(), избегать совместного доступа с помощью
snapshot-копий и
thread confinement, а также почему для остановки лучше брать
std::stop_token, а не «общий»
bool.