我正在 Linux 下编写一个程序,该程序使用 ALSA(连接到自定义设备)同时利用播放和记录。我想使用异步回调架构来读取和写入数据。
但是,我无法获得有关我在回调中被允许执行的操作的限制的任何信息。具体来说,我必须是异步安全的吗?如果是这样,这似乎严重限制了可以做的事情,因为除其他外,我不应该引用任何全局变量,这使得例如从执行主线程填充的缓冲区读取或写入变得相当困难到一个缓冲区,该缓冲区随后被保存到回调之外的文件中。
我可以在 ALSA 回调中使用任何 C 并发构造来协调全局变量与主线程的使用吗?例如,我可以使用 POSIX 信号量吗?我是否可以保证 ALSA 回调相对于主线程是原子的(我知道它对其他 ALSA 回调不是原子的)?
非常感谢人们对此提出的任何见解。