Up
Authors
- Scott Christley (
scottc@net-community.com
)
-
- Richard Frith-Macdonald (
rfm@gnu.org
)
-
Version: 27618
Date: 2009-01-17 08:30:11 +0000 (Sat, 17 Jan 2009)
Copyright: (C) 1996,2003 Free Software Foundation, Inc.
- 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
- (int)
condition;
Availability: OpenStep
Return the current condition of the lock.
- (id)
initWithCondition: (int)value;
Availability: OpenStep
Initialize lock with given condition.
- (void)
lock;
Availability: OpenStep
Block until acquiring lock.
- (BOOL)
lockBeforeDate: (
NSDate*)limit;
Availability: OpenStep
Try to acquire lock and return before limit,
YES
if succeeded, NO
if
not.
- (void)
lockWhenCondition: (int)value;
Availability: OpenStep
Acquire lock when it is available and the internal
condition is equal to value. Blocks
until this occurs.
- (BOOL)
lockWhenCondition: (int)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.
- (
NSString*)
name;
Availability: MacOS-X 10.5.0
Return the name of the receiver or nil
of none has been set.
- (void)
setName: (
NSString*)name;
Availability: MacOS-X 10.5.0
Sets the name of the receiver (for use in
debugging).
- (BOOL)
tryLock;
Availability: OpenStep
Try to acquire lock regardless of condition and return
immediately, YES
if succeeded,
NO
if not.
- (BOOL)
tryLockWhenCondition: (int)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.
- (void)
unlock;
Availability: OpenStep
Relinquish lock.
- (void)
unlockWithCondition: (int)value;
Availability: OpenStep
Relinquish the lock, setting internal condition
to value.
- 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
- (void)
lock;
Availability: OpenStep
Block until acquiring lock.
Attempts to
acquire a lock, and waits until it can do so.
- (BOOL)
lockBeforeDate: (
NSDate*)limit;
Availability: OpenStep
Try to acquire lock and return before limit,
YES
if succeeded, NO
if
not.
Attempts to acquire a lock before the date
limit passes. It returns YES
if it can. It returns NO
if it cannot, or
if the current thread already has the lock (but it waits
until the time limit is up before
returning NO
).
- (
NSString*)
name;
Availability: MacOS-X 10.5.0
Return the name of the receiver or nil
of none has been set.
- (void)
setName: (
NSString*)name;
Availability: MacOS-X 10.5.0
Sets the name of the receiver (for use in
debugging).
- (BOOL)
tryLock;
Availability: OpenStep
Try to acquire lock and return immediately,
YES
if succeeded, NO
if
not.
Attempts to acquire a lock, but returns
immediately if the lock cannot be acquired. It
returns YES
if the lock is acquired.
It returns NO
if the lock cannot be
acquired or if the current thread already has the
lock.
- (void)
unlock;
Availability: OpenStep
Relinquish lock.
- 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.
See
NSLock
for more information about what a lock is. A recursive
lock extends
NSLock
in that you can lock a recursive lock multiple times.
Each lock must be balanced by a corresponding
unlock, and the lock is not released for another
thread to acquire until the last unlock call is
made (corresponding to the first lock message).
Method summary
- (void)
lock;
Availability: OpenStep
Block until acquiring lock.
- (BOOL)
lockBeforeDate: (
NSDate*)limit;
Availability: OpenStep
Try to acquire lock and return before limit,
YES
if succeeded, NO
if
not.
Attempts to acquire a lock before the date
limit passes. It returns YES
if it can. It returns NO
if it cannot (but
it waits until the time limit is up before
returning NO
).
- (
NSString*)
name;
Availability: MacOS-X 10.5.0
Return the name of the receiver or nil
of none has been set.
- (void)
setName: (
NSString*)name;
Availability: MacOS-X 10.5.0
Sets the name of the receiver (for use in
debugging).
- (BOOL)
tryLock;
Availability: OpenStep
Try to acquire lock regardless of condition and return
immediately, YES
if succeeded,
NO
if not.
Attempts to acquire a
lock, but returns NO
immediately if the
lock cannot be acquired. It returns YES
if the lock is acquired. Can be called multiple times to
make nested locks.
- (void)
unlock;
Availability: OpenStep
Relinquish lock.
- Declared in:
- Foundation/NSLock.h
Availability: Not in OpenStep/MacOS-X
Defines the newLockAt:
method.
Method summary
+ (id)
newLockAt: (id*)location;
Availability: Not in OpenStep/MacOS-X
Initializes the
id pointed to
by
location with a new instance of the
receiver's class in a thread safe manner, unless
it has been previously initialized. Returns the contents
pointed to by
location. The
location is considered unintialized if it
contains
nil
.
This method is
used in the GS_INITIALIZED_LOCK macro to initialize
lock variables when it cannot be insured that they can
be initialized in a thread safe environment.
NSLock *my_lock = nil;
void function (void)
{
[GS_INITIALIZED_LOCK(my_lock, NSLock) lock];
do_work ();
[my_lock unlock];
}
- Declared in:
- Foundation/NSLock.h
Availability: Not in OpenStep/MacOS-X
Defines the newLockAt:
method.
Method summary
+ (id)
newLockAt: (id*)location;
Availability: Not in OpenStep/MacOS-X
Initializes the
id pointed to
by
location with a new instance of the
receiver's class in a thread safe manner, unless
it has been previously initialized. Returns the contents
pointed to by
location. The
location is considered unintialized if it
contains
nil
.
This method is
used in the GS_INITIALIZED_LOCK macro to initialize
lock variables when it cannot be insured that they can
be initialized in a thread safe environment.
NSLock *my_lock = nil;
void function (void)
{
[GS_INITIALIZED_LOCK(my_lock, NSRecursiveLock) lock];
do_work ();
[my_lock unlock];
}
- Declared in:
- Foundation/NSLock.h
Availability: OpenStep
Protocol defining lock and unlock operations.
Method summary
- (void)
lock;
Availability: OpenStep
Block until acquiring lock.
- (void)
unlock;
Availability: OpenStep
Relinquish lock.
Up