首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSLock -当锁定锁时应该阻止吗?

NSLock -当锁定锁时应该阻止吗?
EN

Stack Overflow用户
提问于 2011-02-01 21:28:46
回答 2查看 5.5K关注 0票数 8

我有一个循环,它以

代码语言:javascript
复制
[lock lock];

因为在循环的主体中,我正在创建另一个线程,它需要在循环再次运行之前完成。(完成后,另一个线程将解锁)。

但是,在第二个循环中,我得到了以下错误:

代码语言:javascript
复制
2011-02-02 07:15:05.032 BLA[21915:a0f] *** -[NSLock lock]: deadlock (<NSLock: 0x100401f30> '(null)')
2011-02-02 07:15:05.032 BLA[21915:a0f] *** Break on _NSLockError() to debug.

“锁”文档声明如下:

摘要:试图获取锁,阻止线程的执行,直到锁被获取为止。(必填)

这让我觉得在锁被弄到手之前它会被堵住?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-01 21:51:35

听起来像是两个问题:

  • 在一个线程上锁定锁,而在另一个线程上解锁则不受支持,- you可能需要NSCondition。在父线程中等待NSCondition,并在子线程中发出信号。
  • --普通的NSLock在已经锁定时不能被锁定。这就是NSRecursiveLock的目的。
票数 9
EN

Stack Overflow用户

发布于 2011-02-01 21:54:39

当你完成任务时,你记得发送-unlock吗?对-lock的每个调用都必须与对-unlock的调用配对。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4868160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档