Правильное использование volatile sig_atomic_t

Согласно на этом сайте, можно использовать переменные типа volatile sig_atomic_t внутри обработчик сигналов. Теперь мой вопрос: будет ли что-то вроде следующего кода по-прежнему атомарным и, таким образом, не вводить условий гонки?

Предположим, что мы используем многоядерный процессор ( EDIT : запуск многопоточной программы). Работает ли volatile sig_atomic_t в первую очередь для многоядерных систем, или нам следует использовать atomic C ++ 11 для обработчиков сигналов в многоядерной системе ( РЕДАКТИРОВАТЬ : запуск многопоточной программы)?

volatile sig_atomic_t a;

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

14
задан MetallicPriest 13 December 2011 в 13:28
поделиться