pthread_spin_lock()

Updated: October 28, 2024

Lock a thread spinlock

Synopsis:

#include <pthread.h>

int pthread_spin_lock( pthread_spinlock_t * spinner );

Arguments:

spinner
A pointer to the pthread_spinlock_t object that you want to lock.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The pthread_spin_lock() function locks the thread spinlock specified by spinner. If spinner isn't immediately available, pthread_spin_lock() blocks until spinner can be locked.

If a thread attempts to lock a spinlock that's already locked via pthread_spin_lock() or pthread_spin_trylock(), the thread returns EDEADLK.

Returns:

EOK
Success.
EAGAIN
Insufficient resources available to lock spinner.
EDEADLK
The calling thread already holds spinners lock.
EINVAL
Invalid pthread_spinlock_t object spinner.

Classification:

POSIX 1003.1

Safety:  
Cancellation point No
Interrupt handler No
Signal handler Yes
Thread Yes

Caveats:

You may not get the desired behavior from this function because the current implementation is through mutexes. In the uncontested case, this gives the same behavior as spinlocks. In the contested case, this function makes a kernel call.