2011-06-06 118 views
4

在我的iOS应用程序中,我不想使用OpenAL播放声音。我有AudioManager类,负责声音管理(单身人士)。所有声源&缓冲区在创建时被初始化(在第一个呼叫instance上)。从后台线程播放OpenAL声音

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

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

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

回答

6

无论你在哪个线程上调用playsound,openAL实际上都会在自己的线程上播放它。至于同步声音,这取决于你想如何混合它们,无论如何,openAL将始终管理自己的播放线程,所以从线程角度来看,它并不重要,你打电话给哪里playsound

+0

非常感谢! – kpower 2011-06-07 02:56:13

+2

Plus,与例如OpenGL,你可以实际播放任意线程中的声音,因为上下文是每个进程的。 – Damon 2011-06-10 21:13:57