在可可中处理来自MIDIReadProc的传入midi信号的最佳策略

时间:2012-10-17 08:22:29

标签: objective-c macos cocoa coremidi nsslider

我必须通过硬件midi控制器移动一些NSSlider,我编写了一个midi学习程序,将硬件光标分配给NSSlider(子类),然后就可以了。在MIDIReadProc内,我处理移动NSSlider取决于传入的控件和值,但现在当我移动硬件光标时,滑块可以移动一次,就像移动光标停止其他。

我的问题是,处理光标同时移动的最佳策略是什么? 1。我应该用分开的线程来处理吗? 2。我是否应该有一个FIFO数据结构MIDIPacket并处理MIDIReadProc(带有一些并发分离过程)?

对不起我的英语。 谢谢你的关注。

一个。

2 个答案:

答案 0 :(得分:2)

您不应在MIDIReadProc回调中进行任何UI同步。

这个回调是从高优先级的实时线程调用的,所以你必须避免做任何可能“太长”的事情。

正如你所说,你可以使用FIFO并在另一个线程(例如主线程)中处理它。

答案 1 :(得分:0)

我找到了一个解决方案,更新'NSSlider',移动滑块更新kvo路径中的代码,并使用后台进程分离的线程来更新滑块ui和值。 之后,我将ui控制与没有使用的分配分开,并使用键值等于midi控件的'NSMutableDictionary',以便在MIDIReadProc中更快地识别'NSSlider'。

感谢您的关注。