我的应用程序使用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 ...”在控制台上。
怎么可能发生?