我试图让一个函数等待另一个,而我想使用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之类的东西,都没有关系。唯一重要的是,在一种方法中,您在拥有锁的同时检查条件,而在另一种方法中,您进行的更改可以使条件在拥有锁的情况下也变为真。魔术是waitsignal部分:wait实际上解锁了锁,并在其他称为signal的其他线程之后重新获得了该锁。

关于iphone - 如何使用NSConditionLock?或NSCondition,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6704072/

10-09 03:24