는 아래의 코드 사이의 차이가있다 시각?while (a == b); 이 컴파일러 또는 실행에 영향을 않는다</p> <ol> <li><code>while (a==b);</code></li> <li><code>while (a==b) {;}</code></li> </ol> <p>:; 동안 (a ==의 b) 대 {}
이 질문에 대한 배경 : 현재 FW는 코드 1을 사용합니다. 여기서 a 또는 b는 실제로 전역 변수이며 FW는 다른 코어에서 조건이 true가 될 때까지 특정 코어에서 정지하거나 대기합니다. 우리는이 코드를 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가됩니다. 이것이 성능에 어떻게 든 영향을 줄 수 있는지 알고 싶습니까?
'while (a == b) {}}뿐 아니라'while (a == b) {}'이 아닌 이유는 무엇입니까? 전자가 너무 느린 것으로 판명되면 후자를 시험해 볼 수 있습니다. :) 진지하게, 차이는 없습니다. 컴파일러가 어떻게 든 다르게 작동하는 경우 "영향을 미치는지"여부 만 알 수 있습니다. – AnT