Jan*_*ard 5 c++ multithreading android stl android-ndk
在我的应用程序中,我使用本机线程来处理音频数据.代码看起来非常像这样:
std::thread([this] () {
while (enabled) {
if (condition()) {
process();
}
usleep(100);
}
});
Run Code Online (Sandbox Code Playgroud)
当应用程序在前台时,这可以正常工作.在后台,处理速度不够快,我得到缓冲区欠载.它只能usleep在没有后台工作.我传递的价值usleep没有什么区别.它也不适用于较小的值.我也尝试了,std::this_thread::sleep_for(std::chrono::microseconds(100))但没有什么区别.
我必须使用usleep或类似的东西,以避免高CPU使用,从而节省电池寿命.
当应用程序处于后台时,我该怎么做才能使本地线程的行为相同?