我有一个NSOperationQueue,其中有许多NSOperations。我想确保代码的特定部分不是并行执行的。我使用的是NSLock对象是这样的:NSOperation不产生新的线程?
[myLock lock]
some critical code
[myLock unlock]
不幸的是,而不是阻塞的 “锁定” 叫我收到以下错误:
- [NSLock锁]:死锁( '(空)')
经过一番调查后,我发现所有的NSOperations似乎都运行在同一个线程中。我画了这个结论与记录线程ID后:
NSLog(@"Thread %@\n", self, [NSThread currentThread]);
所有操作似乎在同一个线程中运行。即使它们作为操作并行运行。
这有道理吗?我有点困惑。我想念什么?你看到与NSOperation和NSLock一起使用有什么问题吗? (如果没有,那么我相信错误是在我的代码中)
你能发表更多的意见?更多上下文?另外,这是在Mac OS X或iOS? – 2010-11-26 23:06:32