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