从后台线程播放OpenAL声音

时间:2011-06-06 17:28:15

标签: multithreading ios audio openal

在我的iOS应用程序中,我不想使用OpenAL播放声音。我有AudioManager类,负责声音管理(单例)。所有声源和缓冲区在创建时初始化(在第一次instance调用时)。

所以我需要播放声音 - 停止先前的声音,清除旧的缓冲区(必要的源),附加新缓冲区,设置音高和放大器。获得并最终播放声音。所有这些操作都在playSound:(AMSound)sound方法中(AMSound是一个简单的枚举)。

对于UI效果,我从主线程调用此方法。但我的应用程序有很多背景工作,有时还伴有声音效果。

我可以直接从后台线程调用playSound:,还是只在主线程上调用它? 那么同步声音呢:一个是从主线程创建的,另一个是从背景创建的?

1 个答案:

答案 0 :(得分:6)

无论你在哪个线程上调用playsound,openAL实际上都会在自己的线程上播放它。对于同步声音,它取决于你想要如何混合它们,无论如何,openAL将始终管理自己的游戏线程,因此从线程角度来看,你调用的地方并不重要playsound