Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
428 views
in Technique[技术] by (71.8m points)

iphone - How do I use NSConditionLock? Or NSCondition

I am try to make one function wait for another, and I would like to use NSCondionLock in order to accomplish this. I am not asking for help, but really hoping someone could show me a decent tutorial or example to explain NSConditionLock, or possibly suggest a better method.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

EDIT: as @Bonshington commented, this answer refers to NSCondition (as opposed to 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];
}

The someCheckIsTrue can be anything, it could be a simple BOOL variable or even something like [myArray count] == 0 && color == kColorRed, it doesn't matter. It only matters that in one method you check for a condition while you have the lock and in another method you make changes that can make the condition become true also while having the lock. The magic is the wait and signal part: the wait actually unlocks the lock and reacquires it after some other thread called signal.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...