Intereting Posts

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

У меня есть googled для операторов атомарного приращения и уменьшения в Mac OS X и найден «OSAtomic.h», но, похоже, вы можете использовать это только в пространстве ядра.

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

Разве нет что-то вроде InterlockedDecrement или atomic_dec() в OS X?

Что заставляет вас думать, что OSAtomic – это только пространство ядра? Следующий компилируется и работает отлично.

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

В настоящее время рекомендуется использовать std::atomic C ++ 11.

Вы также можете проверить Threaded Building Blocks от Intel для своего atomic шаблона.

Вы также можете использовать IncrementAtomic () и DecrementAtomic () через CoreServices:

 #include  int main(int argc, char** argv) { int val = 0; IncrementAtomic(&val); DecrementAtomic(&val); return 0; } 

Примечание: возвращаемое значение этих функций – это значение целого числа до того, как оно будет увеличено, поэтому, если вы хотите аналогичного поведения с функциями Win32 InterlockedIncrement () и InterlockedDecrement (), вам необходимо создать обертки, которые +1 соответствуют возвращаемому значению ,