Учитывая следующий пример кода из СВД вики:Разница между «занят-ждать» бесконечного цикла и проверка состояния бесконечного цикла
SDL_bool condition = SDL_FALSE;
SDL_mutex *lock;
SDL_cond *cond;
lock = SDL_CreateMutex();
cond = SDL_CreateCond();
.
.
Thread A:
SDL_LockMutex(lock);
while (!condition) {
SDL_CondWait(cond, lock);
}
SDL_UnlockMutex(lock);
Thread B:
SDL_LockMutex(lock);
...
condition = SDL_TRUE;
...
SDL_CondSignal(cond);
SDL_UnlockMutex(lock);
Почему считается более эффективно использовать условное ожидание (SDL_CondWait) то просто использовать inifnite глобальную переменную цикла, например:
while (!condition);
это выглядит (для меня), что они оба заняты, ожидая переменной состояния, чтобы стать правдой, только разница в том, что цикл конд также проверяет, если другой поток 'сигнализировал' переменную cond.