Linuxで、ALSA(カスタムデバイスに接続)を使用して再生と記録の両方を利用するプログラムを作成しています。データの読み取りと書き込みの両方に非同期コールバックアーキテクチャを使用したいと思います。
ただし、コールバック内で許可されていることの制限に関する情報を取得できませんでした。具体的には、非同期セーフである必要がありますか?もしそうなら、これは何ができるかを厳しく制限しているようです。とりわけ、グローバル変数を参照するべきではないため、たとえば、実行のメインスレッドで満たされたバッファからの読み取りや書き込みがかなり難しくなります。バッファに保存され、その後、コールバックの外部でファイルに保存されます。
グローバルの使用をメインスレッドと調整するためにALSAコールバックで使用できるC同時実行構造はありますか?たとえば、POSIXセマフォを使用できますか?ALSAコールバックがメインスレッドに対してアトミックであるという保証はありますか(他のALSAコールバックに対してアトミックではないことはわかっています)?
人々がこれに耐えることができる洞察に感謝します。