コンパイラでアトミック書き込みが最適化されない理由
質問: コンパイラはなぜ冗長なアトミック書き込みをマージしないのですか単一のアトミックに同じ値variable?
説明:
C 11/14 標準では、アトミック変数への連続したストアを 1 つのストアに折りたたむまたは結合することができます。場合によっては、ストアの値が異なる場合でも、この最適化を実行できます。ただし、コンパイラは現在、いくつかの要因によりこの最適化を実行していません。
最適化回避の理由:
解決策と将来の考慮事項:
現時点では、これを明示的に制御する方法はありません。 C 11/14 標準での最適化。ただし、プログラマがそのような最適化をより詳細に制御できるように std::atomic API を拡張するための議論が進行中です。これにより、コンパイラーは、順序付けルールに違反することなく、有用な場合に最適化を実行できるようになります。
代替アプローチ:
揮発性アトミック変数を使用すると、コンパイラーがアトミック ストアを最適化するのを防ぐことができます。ただし、これは確実な解決策ではなく、場合によっては予期しない動作につながる可能性があります。
以上がコンパイラはなぜ冗長なアトミック書き込みを最適化しないのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。