このマルチスレッド C++ プログラムを作成していて、リリースvolatile
モードでコンパイルすると、ある種のバグ (オブジェクトがまだ null) が見つかりました。つまり、マーカーが見つからないように見えます。
しかし問題は、すべての種類のオブジェクトに触れる 2 番目のワーカー スレッドがあるため、事実上すべてがプログラム内で揮発性であることを意味します。
キーワードが修正するように特別に設計されたバグを作成するApple LLVM コンパイラの最適化をオフにする方法があるかどうか疑問に思っています。volatile
これらのバグはデバッグ モードでは表示されません (最適化がオフになっているため)。基本volatile
的にどこにでも配置するということは、すべてのメンバー関数の後にすべてのクラスを追加しvolatile
、すべての共有変数宣言の前に追加することを意味します。volatile
volatile
何かをマークするのを忘れたために偽のバグが表示される危険を冒すよりも、その最適化を失うほうがよいと思いますvolatile
。