Uso inadequado de sig_atomic_t volátil

De acordo comest site, pode-se usar variáveis do tipovolatile sig_atomic_t dentro de um manipulador de sinal. Agora, minha pergunta é: por exemplo, algo como o código a seguir ainda seria atômico e, portanto, não apresentaria condições de corrida?

Suponha que estamos usando um processador multicore EDITA: executando um programa multithread). Fazvolatile sig_atomic_t trabalhe para sistemas multicore em primeiro lugar ou devemos usar oatomic<unsigned int> do C ++ 11 para manipuladores de sinal em um sistema multicore EDITA: executando um programa multithread)?

volatile sig_atomic_t a;

static void signal_handler(int sig, siginfo_t *si, void *unused)
{
  int b;
  ................
  b = ...;
  ,a = a | b;
  ................
}

questionAnswers(1)

yourAnswerToTheQuestion