Я погуглил для атомарных инкрементных и операторов понижения на Mac OS X и нашел "OSAtomic.h", но кажется, что можно только использовать это в пространстве ядра.
Jeremy Friesner указал на меня на межплатформенный атомарный счетчик, в котором они используют блок или взаимное исключение на OS X (насколько я понял чередование ifdefs).
Нет ли что-то как InterlockedDecrement
или atomic_dec()
на OS X?
Почему вы думаете, что 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;
}
Вы также можете проверить резьбовые блоки Intel для их атомного класса
.