共有メモリの場所に対して読み取り/書き込みを行う 2 つの pthread があります。1 つのスレッドで、メモリ ロケーションの更新をチェックし続けます。(Linux、Glibc)
スレッド 1:
while(1) {
if (ptr)
ptr->do_something();
}
スレッド 2:
ptr = update();
ここでのポイントは、しばらく経っても更新が反映されていないことです。次のように同期バリアを使用すると、更新がすぐに表示されます。
while(1) {
__sync_synchronize();
if (ptr)
ptr->do_something();
}
だから私の質問は:
- しばらくたってもアップデートが表示されないのはなぜですか?
- __sync_synchronize() は正確には何をしますか?
編集 1: 更新がすぐに表示されない理由を理解しています。私の質問は、具体的には、非常に長い間表示されていない理由です。