Короче, протестил я несколько алгоритмов: Петерсона, Деккера, Ламперта, xchg-spinlock и lock inc.
По убыванию скорости:
0. Без блокировок вообще (но с ошибками) [45-60K] 🤣
1. lock inc [30-31K]
2. xchg (логично, что медленнее lock inc'а) [19-21K]
3. Петерсон [10K]
4. Деккер [9.5K]
5. Лампорт [7.5K]
Числа в скобках — это кол-во inc'ов в секунду (в моих тестах на моём компе).
Но я только с двумя потоками пробовал.
Везде (кроме 0 и 1) стоят mfence'ы, без которых эти Петерсоны, Деккеры и Ламперты не работают, для xchg тоже поставил на всякий случай.
Короче, эти без-lock-овые алгоритмы годятся только для систем, в которых lock'и в принципе отсутствуют.
p.s. Есть ещё Шиманского (Szymański), а также Эйзенберга и МакГира (Eisenberg & McGuire), но они ещё более замороченные какие-то. Пока даже не стал тестить их.