Есть ли у x86 атомарный инкремент, который сохраняет значение, которое было сохранено?
Вопрос
Я нашел lock inc addr
но это не приводит к сохранению копии сохраненного значения, и даже чтение сразу после него в том же потоке может произойти после конкурирующей записи.
Лучшее решение, которое я нашел, - это load
/inc
/cas
петля.
Решение
lock xadd
это твой друг.
Другие советы
видишь atomic_impl.h для получения дополнительной информации об атомарных примитивах x86 / x86_64 и их использовании.
Не связан с StackOverflow