Para las funciones aquí:MacOSX: OSAtomic vs OSAtomicBarrier
#include <libkern/OSAtomic.h>
hay versiones OSAtomic y OSAtomicBarrier.
Sin embargo, la documentación no muestra código de ejemplo para:
- ¿Cuándo es seguro de usar Simplemente
OSAtomic
, sin la versiónOSAtomicBarrier
- Cuando es que
OSAtomic
habría insegura, peroOSAtomicBarrier
estaría a salvo.
¿Alguien puede proporcionar explicaciones + códigos de muestra?
[Divagaciones aleatorias de "su opinión" sin código real es inútil. Lectores: por favor, voten por tales respuestas; y respuestas vigoremente vivas con el código actual.]
[C/C++ code preferred; La asamblea está bien también.]
¿Por qué no es importante en los sistemas multiprocesador Intel? – anon
Esto lo explica a un alto nivel mejor que yo: http://www.linuxjournal.com/article/8211 – WhirlWind
Lo siguiente no estaría bien: data_structure [y] .data ++; OSAtomicIncrement32 (y); El siguiente código tampoco está bien: data_structure [y] .data ++; OSAtomicIncrement32Barrier (y); – Speakus