multithreading - 从后台线程播放 OpenAL 声音

标签 multithreading ios audio openal

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

因此,要播放声音,我只需要停止之前的声音,清除旧缓冲区(必要源),附加新缓冲区,设置音调和增益,最后播放声音。所有这些操作都在 playSound:(AMSound)sound 方法中(AMSound 是一个简单的枚举)。

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

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

最佳答案

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

关于multithreading - 从后台线程播放 OpenAL 声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6255734/

相关文章:

c++ - 为什么 std::lock() 在使用我自己的 unique_lock 对象时会导致无限循环?

multithreading - 使用多线程python扩展调试多线程程序时GDB挂起

java - android在进度条期间显示对话框

ios - 执行后显示数组

android - iOS/Android 是否可以知道用户何时触摸了广告?

iOS模拟器安装应用失败

python - 如何使用 aubio 找到 .wav 的速度?

testing - 如何为 itunes 和 winamp 等不同的音频软件创建插件?

java - Java EE 中的长期线程

macos - Mac OS X:音频频率是否随采样率的变化而变化?