次のコードに違いはありますか:
while (a==b);
while (a==b) {;}
コンパイラや実行時間に影響はありますか?
この質問の背景: 現在、FW はコード 1 を使用しています。ここで、a または b は実際にはグローバル変数であり、別のコアによって条件が真になるまで、FW は特定のコアでハング/待機します。このコードを SystemC でシミュレートしたいのですが、この "無限" while ループは SystemC コンテキストの下にないため、SystemC スケジューラーはこのスレッドが別のスレッドを待っていることを認識できず、デッドロックが発生します。
したがって、コードを次のように置き換えます。while (a==b) {CONTEXT_SWITCH(1);}
ターゲット ビルドの場合:
#define CONTEXT_SWITCH(x)
systemC ビルドの場合は次のとおりです。
#define CONTEXT_SWITCH(x) wait(x) //where wait is a systemC wait
ターゲット ビルドの場合、このコードはコード 2 になります。これが何らかの形でパフォーマンスに影響するかどうか知りたいですか?