_spin_lock(SYNCH)
_spin_lock --
lock a spin lock
Synopsis
cc [options] -Kthread file
#include <synch.h>
void _spin_lock(spin_t *lock);
Description
_spin_lock locks the spin lock pointed to by lock.
If lock is locked,
the calling thread will busy-wait, or ``spin'',
until lock is available.
When _spin_lock returns,
the caller has acquired lock.
lock must previously have been initialized
(see _spin_init(SYNCH)).
Parameters
lock-
pointer to spin lock to be locked
Return values
_spin_lock does not return a value.
Errors
None
Usage
Because spin locks waste system resources,
most applications should use mutexes instead of spin locks
for mutual exclusion.
In general, _spin_lock is used when the resources are
held exclusively for such short durations
that the expected spin is less costly
than blocking and resuming the thread.
Spin locks should only be used when there is a guarantee
that the thread will not be preempted or blocked
while holding a spin lock.
The locks acquired with _spin_lock should be released
with _spin_unlock.
Warnings
Spin locks must not be used on a single processor system.
In the best case, a spin lock on a single processor system will waste resources,
slowing down the owner of the lock;
in the worst case, it will deadlock the processor.
Operations on spin locks
are not recursive--a thread can deadlock if
it attempts to relock a spin lock that it already has locked.
References
Intro(SYNCH),
_spin(SYNCH),
_spin_destroy(SYNCH),
_spin_init(SYNCH),
_spin_trylock(SYNCH),
_spin_unlock(SYNCH)
© 2005 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 - 01 June 2005