我们正在按时间间隔 (bpm) 播放节拍器音频文件,同时录制音频文件。但是目前两个线程的开始时间并不完全同时,有细微的时间差,这对于音乐来说是不允许的。
我们可以使用什么策略来保证两个进程同时启动(或在几毫秒内)?
谢谢!
最佳答案
我可以想到三种方法来完成这项工作(但显然我从未测试过它们)。
你的每个线程都应该预先完成所有的初始化,然后等待一个“事件”。我能想到的几个计时事件:
使用通知 - 两个线程都监听一些“开始”通知。这应该相当快。
让两个线程都进行 keyValue 监听 - 所以它们都在监听已知对象上某些属性的更改,例如 appDelegate(或单例),或它们都知道的任何对象(委托(delegate)?)
初始化完成后,让每个人都调用一个委托(delegate)。当两者都“准备好”时,代理可以向每个人发送一条消息,一个接一个(在主线程上)以“开始”。
您还可以尝试使用 NSLock 和 friend - 不确定您会得到什么样的延迟。 Key-Value Observing 非常快速且轻量级,适用于任何线程。
关于ios - 如何保证进程在 iOS 中的准确时间启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20407800/