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