logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

pthread_spin_lock, pthread_spin_trylock, pthread_spin_unlock - lock and unlock a spin lock

Caveats

       Applying any of the functions described on this page to an uninitialized spin lock results  in  undefined
       behavior.

       Carefully read NOTES in pthread_spin_init(3).

Description

       The  pthread_spin_lock() function locks the spin lock referred to by lock.  If the spin lock is currently
       unlocked, the calling thread acquires the lock immediately.  If the spin  lock  is  currently  locked  by
       another thread, the calling thread spins, testing the lock until it becomes available, at which point the
       calling thread acquires the lock.

       Calling  pthread_spin_lock()  on  a  lock  that is already held by the caller or a lock that has not been
       initialized with pthread_spin_init(3) results in undefined behavior.

       The pthread_spin_trylock() function is like pthread_spin_lock(), except that if the spin lock referred to
       by lock is currently locked, then, instead of spinning, the  call  returns  immediately  with  the  error
       EBUSY.

       The  pthread_spin_unlock()  function unlocks the spin lock referred to lock.  If any threads are spinning
       on the lock, one of those threads will then acquire the lock.

       Calling pthread_spin_unlock() on a lock that is not held by the caller results in undefined behavior.

Errors

pthread_spin_lock() may fail with the following errors:

       EDEADLOCK
              The system detected a deadlock condition.

       pthread_spin_trylock() fails with the following errors:

       EBUSY  The spin lock is currently locked by another thread.

History

       glibc 2.2.  POSIX.1-2001.

Library

       POSIX threads library (libpthread, -lpthread)

Name

       pthread_spin_lock, pthread_spin_trylock, pthread_spin_unlock - lock and unlock a spin lock

Return Value

       On success, these functions return zero.  On failure, they return an error number.

See Also

pthread_spin_destroy(3), pthread_spin_init(3), pthreads(7)

Linux man-pages 6.9.1                              2024-05-02                               pthread_spin_lock(3)

Standards

       POSIX.1-2008.

Synopsis

#include<pthread.h>intpthread_spin_lock(pthread_spinlock_t*lock);intpthread_spin_trylock(pthread_spinlock_t*lock);intpthread_spin_unlock(pthread_spinlock_t*lock);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       pthread_spin_lock(), pthread_spin_trylock():
           _POSIX_C_SOURCE >= 200112L

See Also