我的应用程序使用带有回调功能的 ALSA 来播放选定的一段声音。有时它只是挂起。我调试了不到 2 天,终于发现 ALSA 的回调函数已经在执行时被调用了。我抓住了这个使用:
void MyALSACallback()
{
std::cout << "1"; std::cout.flush();
// ... snd_pcm_writei() call ... //
// ... no any returns ... //
std::cout << "2"; std::cout.flush();
return;
}
当我打印序列“11”时,应用程序挂起。“121212 ...”在控制台上,而应用程序处于活动状态并且正在播放声音。
这怎么可能发生?