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