Tag: MEMORY-BARRIERS
Entiendo que atomic_thread_fence en C++ es bastante diferente a las acciones de almacenamiento/carga atómicos, y no es una buena práctica tratar de interpretarlas en términos de las instrucciones mfence/lfence/sfence de la CPU (tal vez x86). Si uso c.load(memory_order_acquire), ninguna acción de almacenamiento/carga después de c.load podrá ser reordenada antes de . . . Read more
Aprendí que TSAN no comprende std::atomic_thread_fence, y para solucionarlo, debes decirle a TSAN qué variables atómicas se ven afectadas por la barrera, colocando __tsan_acquire(void *) y __tsan_release(void *) junto a ella (para las barreras de adquisición y liberación respectivamente). Pero, ¿qué pasa con las barreras de orden de secuencia consistente? . . . Read more
Mientras trataba de entender los órdenes de memoria, me encontré con este video. El video afirma que la afirmación al final de la función principal puede fallar, pero no entiendo por qué o si esto es correcto. Lo que entiendo de std::memory_order_release es que ninguna lectura o escritura en el . . . Read more
Necesito realizar algunas escrituras en el hilo principal y llamar a otro hilo estrictamente después de eso para trabajar con los datos escritos. Este es solo un ejemplo sencillo: std::atomic<int> x(0); int z = 0; int y = 0; // … // … // … z = 12; y = . . . Read more
Entonces, estoy emulando un microprocesador pequeño en c que tiene un almacenamiento flash interno representado como un arreglo de chars. La emulación es completamente de un solo hilo y opera en este almacenamiento flash, así como en algunas variables de registro. Lo que quiero hacer es tener un segundo hilo . . . Read more