根據this網站,可以在信號處理程序中使用volatile sig_atomic_t
類型的變量。現在我的問題是,例如像下面的代碼仍然是原子,因此沒有競爭條件?正確使用易失性sig_atomic_t
假設我們正在使用多核處理器(編輯:運行多線程程序)。 volatile sig_atomic_t
甚至可以用於多核系統,或者我們是否應該使用C++ 11的atomic<unsigned int>
來處理多核系統上的信號處理程序(EDIT:運行多線程程序)?
volatile sig_atomic_t a;
static void signal_handler(int sig, siginfo_t *si, void *unused)
{
int b;
................
b = ...;
a = a | b;
................
}
你的問題得到解答(「volatile volatile sig_atomic_t甚至可以用於多核系統」 - 否),所以你應該接受提供的答案。 – Bulwersator