以下代码段之间是否有区别:
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。想知道这是否会以某种方式影响性能?