在我的 iOS 应用程序中,我不想使用 OpenAL 播放声音。我有 AudioManager 类,负责声音管理(单例)。所有声源和缓冲区都在创建时初始化(在第一个 instance
调用时)。
因此,要播放声音,我只需要停止之前的声音,清除旧缓冲区(必要源),附加新缓冲区,设置音调和增益,最后播放声音。所有这些操作都在 playSound:(AMSound)sound
方法中(AMSound
是一个简单的枚举)。
对于 UI 效果,我从主线程调用此方法。但是我的应用程序有很多后台工作,有时还伴随着声音效果。
我可以直接从后台线程调用 playSound:
还是应该只在主线程上调用?
那么同步声音呢:一个是从主线程创建的,另一个是从后台创建的?
最佳答案
无论您在哪个线程上调用playsound
,openAL 实际上都会在它自己的线程上播放它。至于同步声音,这取决于你想如何混合它们,无论如何,openAL 将始终管理自己的播放线程,所以从线程的角度来看,你在哪里调用 playsound
关于multithreading - 从后台线程播放 OpenAL 声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6255734/