Я делаю программу VoIP, которая постоянно проверяет, есть ли в буфере аудиозаписи что-либо (библиотека FMOD, когда функция getRecordPosition> 0, тогда в буфере есть данные).
Так что это будет что-то вроде:
while (true) {
if(getRecordPosition>0) {
process data....
}
}
Однако это приведет к очень высокой загрузке ЦП.Одной из версий было бы использовать sleep (), но я бы предпочел не использовать его, если это возможно.Например, обработка сообщений win32 с помощью цикла, управляемого событиями, не потребляет много циклов ЦП, и я пытаюсь имитировать это.В то же время я понимаю, что функцию getRecordPosition () нужно будет часто вызывать, чтобы увидеть, будет ли возвращаемое значение больше 0.
Не могу ли я выполнить цикл while (true) и sleep () для некоторыхнебольшое количество времени, чтобы сохранить низкую загрузку процессора?
Я гуглил и сделал какой-то поиск, но большинство возвращает либо с помощью sleep (), либо с некоторой синхронизацией POSIX с мьютексом.(Я работаю с приложением Win32 для C ++)
Cheers
--- EDIT: забыл упомянуть, что у меня нет доступа к исходному тексту fmod: / ---