thisサイトによれば、シグナルハンドラ内にはタイプvolatile sig_atomic_t
の変数を使用できます。今私の質問は、例えば、次のようなコードはまだ原子的であり、したがって競合状態を導入しないだろうか?volatile sig_atomic_tの適切な使用
マルチコアプロセッサ(EDIT:マルチスレッドプログラムを実行中)を使用しているとします。 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のsig_atomic_tはマルチコアシステムでも動作しますか?」 - いいえ)ので、回答を受け入れる必要があります。 – Bulwersator