A synchronization tool that combines a condition variable with an integer value. Used to synchronize threads based on state values.
NSCondition
mulle_atomic_pointer_t _currentCondition; // The current condition value
-initWithCondition:
- Initialize with starting condition value-condition
- Returns current condition value-lockWhenCondition:
- Acquires lock when condition matches value-mulleLockWhenNotCondition:
- Acquires lock when condition doesn’t match value-tryLockWhenCondition:
- Attempts to acquire lock if condition matches value-mulleTryLockWhenNotCondition:
- Attempts to acquire lock if condition doesn’t match value-unlockWithCondition:
- Releases lock and sets new condition value-mulleUnlockWithCondition:broadcast:
- Releases lock, sets condition, optionally broadcastsNSConditionLock *lock = [[NSConditionLock alloc] initWithCondition:0];
// Wait for condition 0
[lock lockWhenCondition:0];
// ... do work ...
[lock unlockWithCondition:1]; // Signal completion
// Wait for condition 1
[lock lockWhenCondition:1];
// ... do more work ...
[lock unlockWithCondition:2];