У вас есть состояние гонки , которое является неопределенным поведением .Таким образом, может произойти все, что угодно * (согласно спецификациям), включая коллапс всей вселенной (или носовых демонов ).Будьте напуганы .
Вам нужно погрузиться в детали реализации, чтобы понять, что на самом деле происходит, и вы не хотите ... (и вы, вероятно, не можете понять все детали).
На практике вы, вероятно, используете какую-то операционную систему, например Linux (или другую POSIX, например MacOSX).Существует более двух выполняемых задач (проверьте с помощью top
, htop
, ps
; представьте себе ситуацию thrashing ), и планировщик ядра может выбрать любую из них для каждого ядра (в моем Linuxна рабочем столе присутствует более 200 процессов, большинство из них обычно - но не всегда - простаивают).Таким образом, вы не можете предсказать, что произойдет.Чтобы узнать больше, прочитайте Операционные системы: Three Easy Pieces .
Прочитайте некоторое Руководство по pthread .Кстати, обратите внимание, что все имена функций Pthread начинаются с pthread_
в в нижнем регистре .
Конкретно, ваша интуиция (cnt
между 10 и 20), вероятно, хорошая.Но у вас нет гарантии.Детали зависят от слишком многих вещей: архитектура и модель набора команд процессора (которые могут отличаться для AMD и Intel), его кэш, флаги компилятора и оптимизации, сгенерированный машинный код, ваша операционная система, другие процессы, выполняемые на вашем компьютере.машина, прерывания (например, от таймеров, пакетов внешней сети, движения мыши, ...) и т. д.