Представим простую задачу: десять потоков должны увеличить общий счётчик по миллиону раз. Математика элементарная — в результате ожидаем десять миллионов. Но программа может вывести совсем другое число. Причём ошибка не обязательно будет повторяться при каждом запуске. Разберёмся, почему так…
Один счётчик, десять потоков и неправильный результат: разбираемся в многопоточности C++
Это краткое изложение. Полный текст материала доступен на сайте источника.