In base al sito this, è possibile utilizzare variabili di tipo volatile sig_atomic_t
all'interno di un gestore di segnale. Ora la mia domanda è, ad esempio, qualcosa come il seguente codice sarà ancora atomico e quindi non introdurrà condizioni di gara?Uso corretto di vol. Sig_atomic_t
Si supponga di utilizzare un processore multicore (EDIT: esecuzione di un programma con multithreading). volatile sig_atomic_t
funziona anche per sistemi multicore in primo luogo o dovremmo utilizzare lo atomic<unsigned int>
di C++ 11 per gestori di segnale su un sistema multicore (EDIT: esecuzione di un programma con multithreading)?
volatile sig_atomic_t a;
static void signal_handler(int sig, siginfo_t *si, void *unused)
{
int b;
................
b = ...;
a = a | b;
................
}
La tua domanda è stata risolta ("Volatile sig_atomic_t funziona anche per sistemi multicore in primo luogo" - no), quindi è necessario accettare la risposta fornita. – Bulwersator