所以我在我的 Cocoa 应用程序中重组了一个核心部分(我真的必须这样做!),从那时起我就遇到了问题。
快速概述:我的应用程序控制 QuickTime 电影的播放,以便它们与外部时间码同步。
因此,外部时间码到达 CoreMIDI 回调线程并每秒大约 25 次发布到应用程序。然后检查同步并在需要时进行调整。所有这些检查和调整都是在主线程上完成的。
即使我将所有处理都放在后台线程上,这也是一项繁重的工作,因为我目前正在使用很多 GCD 块,并且我需要重写很多函数以便可以从 NSThread 调用它们。所以我想先确定它是否能解决我的问题。
问题
我的核心 MIDI 回调总是被及时调用,但被分派到主队列的 GCD 块有时会被阻塞长达 500 毫秒。可以理解的是,如果发生这种情况,调整同步将无法正常工作。我找不到原因,所以我猜我正在做一些阻塞主线程的事情。
我对 Instruments 很熟悉,但我找不到合适的模式来查看是什么让我的消息无法及时处理。
如果有人可以提供帮助,我将不胜感激。不知道我能做些什么。提前致谢!