NSCondition被无效线程锁定

时间:2014-06-17 01:17:03

标签: ios concurrency nsthread nscondition

我正在尝试创建一个多线程过渡动画系统,但我对用于同步的NSCondition对象中看似已损坏的状态感到困惑。我在下面的调试器中添加了一些行来说明发生了什么:

po [NSThread currentThread]
<NSThread: 0x146f77a0>{name = Transition Animation, num = 4}

po _condition
<NSCondition: 0x1464dff0>{locked = YES, thread = 0xb083b000, name = nil}

p *(NSCondition*)_condition
(NSCondition) $5 = {
  NSObject = {
    isa = NSCondition
  }
_priv = 0x00000000
}

令我困惑的是condvar说明中给出的地址和名称,因为它们与NSThread的姓名和地址不匹配{{1在条件上。此外,检查NSCondition本身的实际内容是没有用的,因为它的-lock指针是零。有没有人有这方面的经验或知道如何解决它?

P.S。在人们建议我只使用GCD进行并发之前:我使用CADisplayLinks来制作动画,所以我需要使用NSThreads,因为CADisplayLinks需要NSRunLoop才能触发更新。

0 个答案:

没有答案