Articles of atómica

¿Cuándo es preferible usar boolean volátil en Java en lugar de AtomicBoolean?

He analizado las otras preguntas volátiles y Atomicxxxx en SO (incluida esta ) y he leído la descripción de java.util.current.atomic , y no estoy del todo satisfecho con los matices. Si estoy tratando de decidir entre usar volatile boolean y AtomicBoolean , ¿existen diferencias prácticas además de las operaciones atómicas de lectura, modificación y escritura […]

¿Tiene algún sentido utilizar la instrucción LFENCE en procesadores x86 / x86_64?

A menudo en Internet encuentro que LFENCE no tiene sentido en los procesadores x86, es decir, no hace nada, por lo tanto, en vez de MFENCE , podemos usar absolutamente absolutamente SFENCE , porque MFENCE = SFENCE + LFENCE = SFENCE + NOP = SFENCE . Pero si LFENCE no tiene sentido, entonces ¿por qué […]

¿El modelo de memoria Intel hace que SFENCE y LFENCE sean redundantes?

El modelo de memoria Intel garantiza: Las tiendas no se reordenarán con otras tiendas Las cargas no se reordenarán con otras cargas http://bartoszmilewski.com/2008/11/05/who-ordered-memory-fences-on-an-x86/ He visto afirmaciones de que SFENCE es redundante en x86-64 debido al modelo de memoria Intel, pero nunca LFENCE. ¿Las reglas del modelo de memoria anterior hacen que las instrucciones sean redundantes?

Atomicidad en C ++: mito o realidad

He estado leyendo un artículo sobre Lockless Programming en MSDN. Dice : En todos los procesadores modernos, puede suponer que las lecturas y escrituras de tipos nativos alineados naturalmente son atómicas . Siempre que el bus de memoria sea al menos tan ancho como el tipo que se lee o escribe, la CPU lee y […]

Cuda atomics cambiar la bandera

Tengo un código de serie que hace algo como esto if( ! variable ) { do some initialization here variable = true; } Entiendo que esto funciona perfectamente bien en serie y solo se ejecutará una vez. ¿Qué operación atómica sería la correcta aquí en CUDA?

Usos prácticos para AtomicInteger

Entiendo que AtomicInteger y otras variables atómicas permiten accesos concurrentes. ¿En qué casos se usa típicamente esta clase?

¿Cuál es la diferencia entre atómico / volátil / sincronizado?

¿Cómo funciona el trabajo atómico / volátil / sincronizado internamente? ¿Cuál es la diferencia entre los siguientes bloques de código? Código 1 private int counter; public int getNextUniqueIndex() { return counter++; } Código 2 private AtomicInteger counter; public int getNextUniqueIndex() { return counter.getAndIncrement(); } Código 3 private volatile int counter; public int getNextUniqueIndex() { return […]

¿Por qué la asignación de enteros en una variable naturalmente alineada es atómica en x86?

He estado leyendo este artículo sobre operaciones atómicas y menciona que la asignación de enteros de 32 bits es atómica en x86, siempre que la variable esté naturalmente alineada. ¿Por qué la alineación natural asegura la atomicidad?