pthread_spin_lock , pthread_spin_trylock , pthread_spin_unlock
- lock or unlock a spin lock
LIBRARY
Lb libpthread
SYNOPSIS
#include <pthread.h> int
pthread_spin_lock (pthread_spinlock_t *lock); int
pthread_spin_trylock (pthread_spinlock_t *lock); int
pthread_spin_unlock (pthread_spinlock_t *lock);
DESCRIPTION
The
pthread_spin_lock ();
function will acquire
Fa lock
if it is not currently owned by another thread.
If the lock cannot be acquired immediately, it will
spin attempting to acquire the lock (it will not sleep) until
it becomes available.
The
pthread_spin_trylock ();
function is the same as
pthread_spin_lock ();
except that if it cannot acquire
Fa lock
immediately it will return with an error.
The
pthread_spin_unlock ();
function will release
Fa lock ,
which must have been previously locked by a call to
pthread_spin_lock ();
or
pthread_spin_trylock (.);
RETURN VALUES
If successful, all these functions will return zero.
Otherwise, an error number will be returned to indicate the error.
None of these functions will return
Er EINTR .
ERRORS
The
pthread_spin_lock (,);
pthread_spin_trylock ();
and
pthread_spin_unlock ();
functions will fail if:
Bq Er EINVAL
The value specified by
Fa lock
is invalid or is not initialized.
The
pthread_spin_lock ();
function may fail if:
Bq Er EDEADLK
The calling thread already owns the lock.
The
pthread_spin_trylock ();
function will fail if:
Bq Er EBUSY
Another thread currently holds
Fa lock .
The
pthread_spin_unlock ();
function may fail if:
Bq Er EPERM
The calling thread does not own
Fa lock .
SEE ALSO
pthread_spin_destroy3,
pthread_spin_init3
HISTORY
The
pthread_spin_lock (,);
pthread_spin_trylock ();
and
pthread_spin_unlock ();
functions first appeared in
Lb libkse
in
Fx 5.2 ,
and in
Lb libthr
in
Fx 5.3 .
BUGS
The implementation of
pthread_spin_lock (,);
pthread_spin_trylock ();
and
pthread_spin_unlock ();
is expected to conform to
St -p1003.2 .