Tengo un tipo atómico en el que necesito compararlo atómicamente con un valor, y si los dos valores no son iguales, intercambiar el valor del atómico. En otras palabras, donde compare_exchange_strong básicamente realiza esta operación atómicamente: if (atomic_value == expected) atomic_value = desired; …Estoy buscando una forma de hacer esto: . . . Read more
¿Hay alguna función incorporada para esta operación (en C)? lock or QWORD […], … De hecho, estoy buscando el uso de lock or en C. Si no hay ninguna función incorporada, ¿cómo puedo escribirlo en C usando ensamblador inline? Estoy utilizando GCC (versión C 11).
Desde este enlace he leído que los compiladores pueden emitir múltiples instrucciones para almacenar un único valor, lo cual hace que las variables intermedias se escriban en la memoria hasta que todas las instrucciones se ejecuten. Esto podría causar tearing en un entorno multi-hilo. Quiero confirmar, ¿es posible también tener . . . 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