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