3
A
回答
2
是的,将你的呼叫包装到alSourcePlay的代码被阻止,所以 想要在它自己的线程中。 OpenAL拥有自己的事件循环 ,可缓冲声音并将声音呈现给音频设备。
通常,您希望单独的线程为您的源媒体(线程1)和另一个线程提供OpenAL逻辑(线程2)。这是除了你的UI线程(线程3),如果有的话。
相关问题
- 1. NSTImer事件会阻塞主线程吗?
- 2. 阻止阻塞的线程阻塞
- 3. 阻塞队列不阻塞线程?
- 4. MessageBeep线程阻塞
- 5. 阻塞线程 - Java
- 6. 非阻塞线程
- 7. Java线程阻塞
- 8. 关闭流阻塞线程吗?
- 9. performSelector:onThread:当目标线程被阻塞时
- 10. 更新tableView不会阻塞主线程
- 11. 会LINQ到对象阻塞线程?
- 12. 将线程阻塞转换为f中的非线程阻塞#
- 13. STA线程模式线程也会阻塞winform UI线程?
- 14. 如何知道java方法阻塞当前线程
- 15. 强制异步操作阻塞当前线程
- 16. 什么可能导致EventWaitHandle.Set()阻塞当前线程?
- 17. iPhone ...动作之间暂停当前线程(非阻塞)
- 18. 阻止当前线程RXJS
- 19. 显示形式(对话),而不会阻塞当前线程(进度例子)
- 20. 其他线程会在CUDA中的代码中阻塞吗?
- 21. QMessageBox会阻塞Qt中整个主线程的运行吗?
- 22. 阻塞的线程是否会导致进程阻塞?为什么和如何?
- 23. 当一个线程被阻塞时,其他线程会发生什么?
- 24. UI线程被阻塞
- 25. Netty线程被阻塞
- 26. Spring ObjectPooling&线程阻塞
- 27. 队列阻塞主线程
- 28. 没有阻塞线程
- 29. ConnectAsync阻塞UI线程
- 30. Java selector.select()阻塞线程?
例如,我应该这样做:{后台线程} - 写入PCM数据 - > [共享缓冲区] - 读 - > {主线程}。后台线程在主线程播放时调用数据(调用'alSourcePlay')它们? –
如果最终用户与您的软件进行交互,而不是独立进程而没有用户界面,则UI代码需要其自己的线程(通常是主线程)。需要额外的线程来处理媒体读取/解码和I/O。第三个线程专用于围绕OpenAL代码的逻辑。但是,如果您只是在玩耍,想要撬动OpenAL的轮胎,并且不介意播放过程中出现无响应的流程,请继续操作,并在单个线程中完成,OpenAL不介意,但会在整个媒体播放期间挂起应用程序。 –