Эквивалент InterlockedIncrement в Linux / gcc

Это был бы очень простой вопрос (можно было бы продублировать), но я не смог его найти.

Win32 API предоставляет очень удобный набор атомарных операций (как встроенных функций), таких как InterlockedIncrement, который испускает lock add код x86. Кроме того, InterlockedCompareExchange отображается на lock cmpxchg.

Но я хочу сделать это в Linux с помощью gcc. Поскольку я работаю с 64-битной версией, невозможно использовать встроенную сборку. Есть ли встроенные функции для gcc?


person minjang    schedule 24.01.2010    source источник
comment
Возможно, вы захотите выполнить поиск в gcc с блокировкой инкремента или в linux с блокированным инкрементом (http://stackoverflow.com/questions/149710/interlocked-equivalent-on-linux)   -  person D.Shawley    schedule 24.01.2010


Ответы (1)


Встроенные атомарные модули GCC

person Nikolai Fetissov    schedule 24.01.2010
comment
Спасибо! __sync_fetch_and_add был тем. - person minjang; 24.01.2010
comment
Фактически, эквивалентом InterlockedIncrement () будет __sync_add_and_fetch (). __sync_fetch_and_add () возвращает предыдущее значение, в отличие от InterlockedIncrement (), который возвращает новое значение. - person noamtm; 15.11.2010