- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在这个意义上使用 NSCondition 类:
- (void) method1
{
[[cocoaCondition lock] lock];
while (!someCheckIsTrue) {
[cocoaCondition wait];
}
// Do something.
[cocoaCondition unlock];
}
- (void) method2
{
[cocoaCondition lock];
// Do something.
someCheckIsTrue = YES;
[cocoaCondition signal];
[cocoaCondition unlock];
}
我有两个线程,线程1运行方法1,线程2运行方法2。我希望当[cocoaCondition wait]
被调用时,thread1将被阻塞。然后当thread2调用[cocoaCondition signal]
时,thread1将恢复运行。我已经测试了代码,它正如我希望的那样工作。
但是,正如您所看到的,当代码运行时:
第 1 步,线程 1 调用:[cocoaCondition lock]
(苹果文档说:尝试获取锁,阻塞线程的执行,直到可以获取锁)
第2步,线程1调用:[cocoaCondition wait]
步骤3,线程2调用:[cocoaCondition lock]
(按照苹果的文档,thread2应该被阻塞)
步骤4,线程2调用:[cocoaCondition signal]
(因此,thread2应该被阻塞,并且在调用[cocoaConditon unlock]
之前不能调用此方法)
我认为我的代码陷入了僵局,但为什么不呢?所以我猜当thread1调用[cocoaCondition wait]
时cocoaCondition被解锁在第 2 步中,是吗?
最佳答案
文档中说:“当线程等待某个条件时,条件对象会解锁其锁并阻塞该线程。当条件发出信号时,系统会唤醒该线程。然后,条件对象在从返回之前重新获取其锁。 wait 或 waitUntilDate: 方法。因此,从线程的角度来看,就好像它始终持有锁。”
你的猜测是对的。
关于iphone - NSCondition 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8611994/
我在这个意义上使用 NSCondition 类: - (void) method1 { [[cocoaCondition lock] lock]; while (!someCheckI
我知道以下是您应该如何使用 NSCondition: 方法一: [cocoaCondition lock]; while (someConditionIsTrue) [cocoaConditi
来自 this Apple's document about NSCondition ,NSCondition的用法应该是: 头部 1: [cocoaCondition lock]; while (t
我正在查看NSCondition documentation示例并有点困惑: Whenever you use a condition object, the first step is to loc
我正在使用最新的 SDK 开发 iOS 5.0+ 应用。 我有这个代码: @interface ServerManager() { NSCondition* statusLock; [ ...
我正在通过互联网异步下载四个 plist 文件。我需要等到所有四个文件都下载完毕,直到我在第一次运行时推送 UIViewController,或者在所有后续运行中刷新数据并重新加载我的所有 UITab
我是 Objective-C 的新手。我目前正在处理线程。 我必须同步执行线程。我正在使用 NSInvocationOperaion 生成一个线程。 我有两个线程。我需要等待第一个线程发出事件或超时信
我试图让一个函数等待另一个函数,我想使用 NSCondionLock 来完成这个。我不是在寻求帮助,而是真的希望有人能给我一个像样的教程或示例来解释 NSConditionLock,或者可能建议一个更
我敢肯定,我了解NSCondition和信号量之间的区别(来自c api)。 苹果开发人员,尤其是iPhone开发人员更常用哪一种? 最佳答案 以我的经验,“都不”。无论出于何种原因,信号灯只是在普及
他们都使用了计数器,并使用锁来保护计数器的自增和自减,当计数器小于零时,线程等待。在我看来,除了它们的 api 之外,它们是相同的。 最佳答案 Apple 在他们的文档中写到关于 DispatchSe
我是一名优秀的程序员,十分优秀!