Sto provando a portare un codice che ho scritto da Mac OS X a Linux e sto cercando di trovare un sostituto adatto solo per OSX OSAtomic.h
. Ho trovato la famiglia gcc __sync*
, ma non sono sicuro che sarà compatibile con il compilatore/kernel più vecchio che ho. Ho bisogno che il codice funzioni su GCC v4.1.2 e kernel 2.6.18.Operazioni atomiche in C su Linux
Le operazioni particolari di cui ho bisogno sono:
- Incremento
- Decremento
- Confronta e Swap
Ciò che è strano è che in esecuzione locate stdatomic.h
sulla macchina Linux trova il file di intestazione (in una directory C++), mentre l'esecuzione dello stesso comando sulla mia macchina OSX (gcc v4.6.3) non restituisce nulla. Cosa devo installare per ottenere la libreria stdatomic e funzionerà con gcc v 4.1.2?
Come nota a margine, non posso utilizzare alcuna libreria di terze parti.
I buildin atomici di GCC sono documentati come parte di [4.1.1] (http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gcc/Atomic-Builtins.html). – jxh
Simile per incremento e recupero e nessun requisito di versione GCC: http://stackoverflow.com/questions/2353371/atomic-increment-fetch –