Per le funzioni qui:MacOSX: OSAtomic vs OSAtomicBarrier
#include <libkern/OSAtomic.h>
ci sono versioni OSAtomic e OSAtomicBarrier.
Tuttavia, la documentazione non mostra codice di esempio per:
- Quando è sicuro da usare solo
OSAtomic
, senza la versioneOSAtomicBarrier
- Quando è che
OSAtomic
sarebbe pericoloso, maOSAtomicBarrier
sarebbe al sicuro
Qualcuno può fornire spiegazioni + codici di esempio?
[Le ramificazioni casuali di "tua opinione" senza codice effettivo sono inutili. Lettori: si prega di votare giù tali risposte; e risparmi vigorosamente le risposte con il codice effettivo.]
[codice C/C++ preferito; Montaggio okay.]
Perché non importa sui sistemi multiprocessore Intel? – anon
Questo lo spiega ad un alto livello meglio di quanto posso: http://www.linuxjournal.com/article/8211 – WhirlWind
Quanto segue non sarebbe ok: data_structure [y] .data ++; OSAtomicIncrement32 (y); Il prossimo codice non è corretto anche: data_structure [y] .data ++; OSAtomicIncrement32Barrier (y); – Speakus