シグナルハンドラでは、変数の値を変更しています。しかし、変数のリーダー_バリアーをsig_atomic_tと宣言したにもかかわらず、プログラムはアップデートに気付かない。シグナルハンドラ内で更新される変数は更新されません
void timer_action(int signum)
{
static int count = 0;
if (!(*pbarrier_in_proc) && !(leader_barrier) && !(*pno_more))
leader_barrier = 1;
}
とそのtimer_actionが実行さないことを確認したと私はシグナルハンドラ内でその値を印刷して、それを見てきたようleader_barrierは、その内部の1になるん。
プログラムが更新プログラムに気付かないということを意味しますか?その変数を他の場所でどのように使用しているかを示します。 – user623879
その変数はほかの場所では読み込まれず、書き込まれません。そして、このシグナルハンドラが呼び出された後もプログラムはそれを読んでいますが、まだ更新を見ることはできません。奇妙な! – MetallicPriest