私のアプリケーションは、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...」は、アプリケーションが動作していてサウンドが再生されている間、コンソールに表示されます。
それはどのように起こりますか?