В моем приложении я использую собственные потоки для обработки аудиоданных. Код выглядит примерно так:Почему родные потоки отличаются друг от друга, когда приложение находится в фоновом режиме?
std::thread([this]() {
while (enabled) {
if (condition()) {
process();
}
usleep(100);
}
});
Это прекрасно работает, когда приложение находится на переднем плане. В фоновом режиме обработка не достаточно быстро, и я получаю буферизацию. Он работает только usleep
в фоновом режиме. Значение, которое я перехожу к usleep
, не имеет значения. Он также не работает с меньшими значениями. Я также пробовал std::this_thread::sleep_for(std::chrono::microseconds(100))
, но это не имеет значения.
Я должен использовать usleep
или что-то подобное, чтобы избежать высокой загрузки процессора и тем самым сэкономить время работы от батареи.
Что делать, чтобы заставить туземные потоки вести себя одинаково, когда приложение находится в фоновом режиме?