The
pthread_spin_init() function is used to initialize a spin lock. In the
NetBSD implementation the
pshared parameter is currently unused and all spin locks exhibit the
PTHREAD_PROCESS_SHARED property, implying that all spin locks may be accessed by threads of multiple processes. The results of calling
pthread_spin_init() with an already initialized lock are undefined.
The
pthread_spin_destroy() function is used to destroy a spin lock previously created with
pthread_spin_init(). It is undefined what happens if the function is called when a thread holds the lock, or if the function is called with an uninitialized spin lock.
The
pthread_spin_lock() function acquires a spin lock on
lock, provided that
lock is not presently held. If the lock cannot be immediately acquired, the calling thread repeatedly retries until it can acquire the lock. Undefined behavior may follow if the calling thread holds the lock at the time the call is made.
The
pthread_spin_trylock() function performs the same locking action, but does not block if the lock cannot be immediately obtained; if the lock is held, the call fails.
The
pthread_spin_unlock() function is used to release the read/write lock previously obtained by
pthread_spin_lock() or
pthread_spin_trylock(). The results are undefined if the lock is not held by the calling thread.