我试图让一个函数等待另一个,而我想使用NSCondionLock来完成此任务。我并不是在寻求帮助,而是希望有人可以向我展示一个不错的教程或示例来解释NSConditionLock,或者可能提出一种更好的方法。
最佳答案
编辑:@@ Bonshington评论时,,此答案涉及NSCondition
(而不是NSConditionLock
):
- (void) method1 {
[myCondition lock];
while (!someCheckIsTrue)
[myCondition wait];
// Do something.
[myCondition unlock];
}
- (void) method2 {
[myCondition lock];
// Do something.
someCheckIsTrue = YES;
[myCondition signal];
[myCondition unlock];
}
someCheckIsTrue
可以是任何东西,可以是简单的BOOL变量,甚至可以是[myArray count] == 0 && color == kColorRed
之类的东西,都没有关系。唯一重要的是,在一种方法中,您在拥有锁的同时检查条件,而在另一种方法中,您进行的更改可以使条件在拥有锁的情况下也变为真。魔术是wait
和signal
部分:wait
实际上解锁了锁,并在其他称为signal
的其他线程之后重新获得了该锁。关于iphone - 如何使用NSConditionLock?或NSCondition,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6704072/