Según el sitio this, se pueden usar variables de tipo volatile sig_atomic_t
dentro de un manejador de señal. Ahora mi pregunta es, por ejemplo, algo así como el siguiente código aún sería atómico y, por lo tanto, ¿no introduciría condiciones de carrera?Uso apropiado de volátil sig_atomic_t
Supongamos que estamos utilizando un procesador multinúcleo (EDIT: ejecuta un programa multiproceso). ¿Funciona volatile sig_atomic_t
incluso para sistemas multinúcleo en primer lugar o deberíamos usar el atomic<unsigned int>
de C++ 11 para manejadores de señal en un sistema multinúcleo (EDIT: ejecutar un programa multiproceso)?
volatile sig_atomic_t a;
static void signal_handler(int sig, siginfo_t *si, void *unused)
{
int b;
................
b = ...;
a = a | b;
................
}
Su pregunta fue respondida ("¿Funciona sig_atomic_t volátil incluso para sistemas multinúcleo en primer lugar" - no), por lo que debe aceptar la respuesta proporcionada. – Bulwersator