4

Linux を使用しており、別のスレッドで読み取り/書き込みを行う 2 つの変数があります。ときどき (100ms) ThreadB が変数のステータスを読み取り、何かを実行します。それは基本的にwhile(1){ dosomething(); usleep(); }です。変数がキャッシュされて更新されないのではないかと心配しています。

最適化後にループが確実に機能するようにする最善の方法は何ですか? 私はvolatileその仕事をすべきだと考えていますが、時々うまくいかないと聞きます。どちらのループも頻繁には実行されません (10 ミリ秒以上)。それらにアクセスするための最も簡単で直接的な方法は何ですか? 私はC++ 11を使用しています

使い方がちょっとわかりませんstd::atomic<int>。通常の int 変数のように使用できますか?期待どおりに動作しますか?

4

1 に答える 1