Согласно этому сайту, внутри обработчика сигнала можно использовать переменные типа volatile sig_atomic_t
. Теперь, на мой вопрос, будет, например, что-то вроде следующего кода все еще атомарным и, следовательно, не будет вводить никаких условий гонки?
Предположим, что мы используем многоядерный процессор ( EDIT: запуск многопоточной программы). Действительно ли volatile sig_atomic_t
работает для многоядерных систем в первую очередь или мы должны использовать atomic<unsigned int>
для С++ 11 для обработчиков сигналов в многоядерной системе ( EDIT: запуск многопоточной программы)?
volatile sig_atomic_t a;
static void signal_handler(int sig, siginfo_t *si, void *unused)
{
int b;
................
b = ...;
a = a | b;
................
}