Атомарный инкремент на Mac OS X

Я погуглил для атомарных инкрементных и операторов понижения на Mac OS X и нашел "OSAtomic.h", но кажется, что можно только использовать это в пространстве ядра.

Jeremy Friesner указал на меня на межплатформенный атомарный счетчик, в котором они используют блок или взаимное исключение на OS X (насколько я понял чередование ifdefs).

Нет ли что-то как InterlockedDecrement или atomic_dec() на OS X?

6
задан Community 23 May 2017 в 12:25
поделиться

2 ответа

Почему вы думаете, что OSAtomic - это только пространство ядра? Следующие компилируют и работают нормально.

#include <libkern/OSAtomic.h>
#include <stdio.h>

int main(int argc, char** argv) {
  int32_t foo = 1;
  OSAtomicDecrement32(&foo);
  printf("%d\n", foo);

  return 0;
}
8
ответ дан 10 December 2019 в 00:38
поделиться

Вы также можете проверить резьбовые блоки Intel для их атомного класса .

0
ответ дан 10 December 2019 в 00:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: