Up

# NSLock class reference

### Authors

David Chisnall (`csdavec@swan.ac.uk`)

Copyright: (C) 1996-2010 Free Software Foundation, Inc.

### Contents -

1. Software documentation for the NSCondition class
2. Software documentation for the NSConditionLock class
3. Software documentation for the NSLock class
4. Software documentation for the NSRecursiveLock class
5. Software documentation for the NSLocking protocol

# Software documentation for the NSCondition class

## NSCondition : NSObject

> Declared in:
>   Foundation/NSLock.h

> Conforms to:
>   NSLocking

Availability: OpenStep
NSCondition provides an interface to POSIX condition variables.
Method summary

- -broadcast
- -name
- -setName:
- -signal
- -wait
- -waitUntilDate:

### broadcast

- (void) broadcast;
Availability: OpenStep
Wakes all threads that are waiting on this condition.

### name

- (NSString*) name;
Availability: OpenStep
Returns the name used for debugging messages.

### setName:

- (void) setName: (NSString*)newName;
Availability: OpenStep
Sets the name used for debugging messages.

### signal

- (void) signal;
Availability: OpenStep
Wakes wany one of the threads that are waiting on this condition.

### wait

- (void) wait;
Availability: OpenStep
Blocks and atomically unlocks the receiver. This method should only be called when the receiver is locked. The caller will then block until the receiver is sent either a -signal or -broadcast message from another thread. At which point, the calling thread will reacquire the lock.

### waitUntilDate:

- (BOOL) waitUntilDate: (NSDate*)limit;
Availability: OpenStep
Blocks the calling thread and acquires the lock, in the same way as -wait . Returns `YES` if the condition is signaled, or `NO` if the timeout is reached.

# Software documentation for the NSConditionLock class

## NSConditionLock : NSObject

> Declared in:
>   Foundation/NSLock.h

> Conforms to:
>   NSLocking

Availability: OpenStep
Lock that allows user to request it only when an internal integer condition is equal to a particular value. The condition is set on initialization and whenever the lock is relinquished.
Method summary

- -condition
- -initWithCondition:
- -lock
- -lockBeforeDate:
- -lockWhenCondition:
- -lockWhenCondition:beforeDate:
- -name
- -setName:
- -tryLock
- -tryLockWhenCondition:
- -unlock
- -unlockWithCondition:

### condition

- (NSInteger) condition;
Availability: OpenStep
Return the current condition of the lock.

### initWithCondition:

- (id) initWithCondition: (NSInteger)value;
Availability: OpenStep
Initialize lock with given condition.

### lock

- (void) lock;
Availability: OpenStep
Block until acquiring lock.

### lockBeforeDate:

- (BOOL) lockBeforeDate: (NSDate*)limit;
Availability: OpenStep
Try to acquire lock and return before limit, `YES` if succeeded, `NO` if not.

### lockWhenCondition:

- (void) lockWhenCondition: (NSInteger)value;
Availability: OpenStep
Acquire lock when it is available and the internal condition is equal to value. Blocks until this occurs.

### lockWhenCondition: beforeDate:

- (BOOL) lockWhenCondition: (NSInteger)condition_to_meet beforeDate: (NSDate*)limitDate;
Availability: OpenStep
Try to acquire lock, when internal condition is equal to condition_to_meet, and return before limit, `YES` if succeeded, `NO` if not.

### name

- (NSString*) name;
Availability: MacOS-X 10.5.0
Return the name of the receiver or `nil` of none has been set.

### setName:

- (void) setName: (NSString*)name;
Availability: MacOS-X 10.5.0
Sets the name of the receiver (for use in debugging).

### tryLock

- (BOOL) tryLock;
Availability: OpenStep
Try to acquire lock regardless of condition and return immediately, `YES` if succeeded, `NO` if not.

### tryLockWhenCondition:

- (BOOL) tryLockWhenCondition: (NSInteger)value;
Availability: OpenStep
Try to acquire lock if condition is equal to value and return immediately in any case, `YES` if succeeded, `NO` if not.

### unlock

- (void) unlock;
Availability: OpenStep
Relinquish lock.

### unlockWithCondition:

- (void) unlockWithCondition: (NSInteger)value;
Availability: OpenStep
Relinquish the lock, setting internal condition to value.

# Software documentation for the NSLock class

## NSLock : NSObject

> Declared in:
>   Foundation/NSLock.h

> Conforms to:
>   NSLocking

Availability: OpenStep

Simplest lock for protecting critical sections of code.

An `NSLock` is used in multi-threaded applications to protect critical pieces of code. While one thread holds a lock within a piece of code, another thread cannot execute that code until the first thread has given up its hold on the lock. The limitation of `NSLock` is that you can only lock an `NSLock` once and it must be unlocked before it can be acquired again.
Other lock classes, notably NSRecursiveLock , have different restrictions.

Method summary

- -lock
- -lockBeforeDate:
- -name
- -setName:
- -tryLock
- -unlock

### lock

- (void) lock;
Availability: OpenStep
Block until acquiring lock.

### lockBeforeDate:

- (BOOL) lockBeforeDate: (NSDate*)limit;
Availability: OpenStep
Try to acquire lock and return before limit, `YES` if succeeded, `NO` if not.

### name

- (NSString*) name;
Availability: MacOS-X 10.5.0
Return the name of the receiver or `nil` of none has been set.

### setName:

- (void) setName: (NSString*)name;
Availability: MacOS-X 10.5.0
Sets the name of the receiver (for use in debugging).

### tryLock

- (BOOL) tryLock;
Availability: OpenStep
Try to acquire lock and return immediately, `YES` if succeeded, `NO` if not.

### unlock

- (void) unlock;
Availability: OpenStep
Relinquish lock.

# Software documentation for the NSRecursiveLock class

## NSRecursiveLock : NSObject

> Declared in:
>   Foundation/NSLock.h

> Conforms to:
>   NSLocking

Availability: OpenStep
Allows the lock to be recursively acquired by the same thread. If the same thread locks the mutex (n) times then that same thread must also unlock it (n) times before another thread can acquire the lock.
Method summary

- -lock
- -lockBeforeDate:
- -name
- -setName:
- -tryLock
- -unlock

### lock

- (void) lock;
Availability: OpenStep
Block until acquiring lock.

### lockBeforeDate:

- (BOOL) lockBeforeDate: (NSDate*)limit;
Availability: OpenStep
Try to acquire lock and return before limit, `YES` if succeeded, `NO` if not.

### name

- (NSString*) name;
Availability: MacOS-X 10.5.0
Return the name of the receiver or `nil` of none has been set.

### setName:

- (void) setName: (NSString*)name;
Availability: MacOS-X 10.5.0
Sets the name of the receiver (for use in debugging).

### tryLock

- (BOOL) tryLock;
Availability: OpenStep
Try to acquire lock regardless of condition and return immediately, `YES` if succeeded, `NO` if not.

### unlock

- (void) unlock;
Availability: OpenStep
Relinquish lock.

# Software documentation for the NSLocking protocol

## NSLocking

> Declared in:
>   Foundation/NSLock.h

Availability: OpenStep
Protocol defining lock and unlock operations.
Method summary

- -lock
- -unlock

### lock

- (void) lock;
Availability: OpenStep
Block until acquiring lock.

### unlock

- (void) unlock;
Availability: OpenStep
Relinquish lock.

Up