1

我的应用程序使用带有回调功能的 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 ...”在控制台上,而应用程序处于活动状态并且正在播放声音。

这怎么可能发生?

4

0 回答 0