Selon le site this, on peut utiliser des variables de type volatile sig_atomic_t
dans un gestionnaire de signal. Maintenant ma question est, serait par exemple quelque chose comme le code suivant encore être atomique et ainsi introduire aucune condition de course? Supposons que nous utilisons un processeur multicœur (EDIT: exécution d'un programme multithread). Est-ce que volatile sig_atomic_t
fonctionne même pour les systèmes multicœurs en premier lieu ou devrions-nous utiliser le atomic<unsigned int>
de C++ 11 pour les gestionnaires de signaux sur un système multicœur (EDIT: exécution d'un programme multithread)?Utilisation correcte du volatile sig_atomic_t
volatile sig_atomic_t a;
static void signal_handler(int sig, siginfo_t *si, void *unused)
{
int b;
................
b = ...;
a = a | b;
................
}
Votre question a reçu une réponse ("Est-ce que volatile sig_atomic_t fonctionne même pour les systèmes multicœurs en premier lieu" - non), vous devez donc accepter la réponse fournie. – Bulwersator