На X86 не атомарный инкремент — простое увеличение integer на единицу занимает один такт процессора [
1]. Если сделать эту операцию атомарной, то она будет занимать от 5 до 20 тактов, если только одно ядро делает атомарную инструкцию и если это ядро последнее меняло атомарную переменную [
2]. Если ядро не последним меняло атомарную переменную, то в районе 40 тактов.
Итого, такое решение
в 5-40 раз медленнее только за счет того, что использована атомарная переменная. Дальше хуже.