Есть ли разница между следующими фрагментами кода:
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. Хотел узнать, может ли это как-то повлиять на производительность?
while (a==b) {;}
, а не толькоwhile (a==b) {}
? Вы можете попробовать последнее, если первое окажется слишком медленным :) А если серьезно, то разницы нет. Оказывает ли это влияние (если ваш компилятор ведет себя как-то по-другому) - можете сказать только вы. - person AnT   schedule 11.05.2013