Я работаю над главой об iPhone-аудио и столкнулся с разделом кода, который я не могу понять:
while (aqc.playPtr < aqc.sampleLen)
{
select(NULL, NULL, NULL, NULL, 1.0);
}
(Полный пример кода находится на страницах 163-166). Из того, что я понимаю в коде, аудио обрабатывается в другом потоке, и цикл while находится там, чтобы предотвратить прерывание основного потока, пока звук все еще обрабатывается.
Я не понимаю, почему select() используется вместо sleep().
Из того, что я прочитал, select() используется для контроля изменений ввода-вывода и передачи его. NULL не делает ничего значимого. Я запустил код с помощью sleep(), и он работает так, как ожидалось. (Мои знания о низком уровне POSIX почти несуществуют.)