ios - 如何保证进程在 iOS 中的准确时间启动

标签 ios c core-audio

我们正在按时间间隔 (bpm) 播放节拍器音频文件,同时录制音频文件。但是目前两个线程的开始时间并不完全同时,有细微的时间差,这对于音乐来说是不允许的。

我们可以使用什么策略来保证两个进程同时启动(或在几毫秒内)?

谢谢!

最佳答案

我可以想到三种方法来完成这项工作(但显然我从未测试过它们)。

你的每个线程都应该预先完成所有的初始化,然后等待一个“事件”。我能想到的几个计时事件:

  • 使用通知 - 两个线程都监听一些“开始”通知。这应该相当快。

  • 让两个线程都进行 keyValue 监听 - 所以它们都在监听已知对象上某些属性的更改,例如 appDelegate(或单例),或它们都知道的任何对象(委托(delegate)?)

  • 初始化完成后,让每个人都调用一个委托(delegate)。当两者都“准备好”时,代理可以向每个人发送一条消息,一个接一个(在主线程上)以“开始”。

您还可以尝试使用 NSLock 和 friend - 不确定您会得到什么样的延迟。 Key-Value Observing 非常快速且轻量级,适用于任何线程。

关于ios - 如何保证进程在 iOS 中的准确时间启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20407800/

相关文章:

ios - 如何使用 Swift Codable 将复杂的 Json 打印到 CollectionView?

ios - 如果 iPhone 用户禁用了 "Set Automatically"时区,是否仍然可以找到当前的本地时区?

c - 替换字符串中的单个单词

c - 简单错误 : expected declaration or statement at end of input

swift - 了解 AudioStreamBasicDescription

iphone - 带有 CLGeocoder 问题的正向地理编码

ios - 从 URL 捕获图像时出错

c - printf() 中的格式说明符在应为 char 时要求输入 int

ios - 多声道音频 iOS(需要 4 个同时输入)

swift - Swift 中的音频单元渲染 block ?