pthread_spin_lock(3) - wariua/manpages-ko GitHub Wiki
pthread_spin_lock, pthread_spin_trylock, pthread_spin_unlock - μ€νλ½ μ κ·ΈκΈ° λ° νκΈ°
#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);
-pthread
λ‘ μ»΄νμΌ λ° λ§ν¬.
glibc κΈ°λ₯ νμΈ λ§€ν¬λ‘ μ건 (feature_test_macros(7) μ°Έκ³ ):
-
pthread_spin_lock()
,pthread_spin_trylock()
: _POSIX_C_SOURCE >= 200112L
pthread_spin_lock()
ν¨μλ lock
μ΄ κ°λ¦¬ν€λ μ€νλ½μ μ κ·Όλ€. μ€νλ½μ΄ νμ¬ μ 겨 μμ§ μμΌλ©΄ νΈμΆ μ€λ λκ° μ¦μ λ½μ νλνλ€. μ€νλ½μ΄ νμ¬ λ€λ₯Έ μ€λ λμ μν΄ μ 겨 μμΌλ©΄ νΈμΆ μ€λ λκ° λ§΄λλ©΄μ λ½μ κ²μ¬νλ©°, λ½μ΄ μ¬μ© κ°λ₯ν΄μ§λ μμ μ νΈμΆ μ€λ λκ° λ½μ νλνλ€.
νΈμΆμκ° μ΄λ―Έ μ‘κ³ μλ λ½μ΄λ pthread_spin_init(3)μΌλ‘ μ΄κΈ°ν νμ§ μμ λ½μ pthread_spin_lock()
μ νΈμΆνλ κ²°κ³Όλ κ·μ λμ΄ μμ§ μλ€.
pthread_spin_trylock()
ν¨μλ pthread_spin_lock()
κ³Ό λΉμ·νλ lock
μ΄ κ°λ¦¬ν€λ μ€νλ½μ΄ νμ¬ μ 겨 μμΌλ©΄ λ§΄λκΈ°λ₯Ό νμ§ μκ³ νΈμΆμ΄ μ¦μ EBUSY
μ€λ₯λ‘ λ°ννλ€.
pthread_spin_unlock()
ν¨μλ lock
μ΄ κ°λ¦¬ν€λ μ€νλ½μ νΌλ€. κ·Έ λ½μ λ§΄λκ³ μλ μ€λ λκ° μμΌλ©΄ κ·Έ μ€ ν μ€λ λκ° λ½μ νλνκ² λλ€.
νΈμΆμκ° μ‘κ³ μμ§ μμ λ½μ pthread_spin_unlock()
μ νΈμΆνλ κ²°κ³Όλ κ·μ λμ΄ μμ§ μλ€.
μ±κ³΅ μ μ΄ ν¨μλ€μ 0μ λ°ννλ€. μ€ν¨ μ μ€λ₯ λ²νΈλ₯Ό λ°ννλ€.
pthread_spin_lock()
μ΄ λ€μ μ€λ₯λ‘ μ€ν¨ν μ μλ€.
EDEADLOCK
- μμ€ν μ΄ κ΅μ°© 쑰건μ νμ§νλ€.
pthread_spin_trylock()
μ΄ λ€μ μ€λ₯λ‘ μ€ν¨ν μ μλ€.
EBUSY
- μ€νλ½μ΄ νμ¬ λ€λ₯Έ μ€λ λμ μν΄ μ 겨 μλ€.
glibc λ²μ 2.2μμ μ΄ ν¨μλ€μ΄ μ²μ λ±μ₯νλ€.
POSIX.1-2001.
μ΄ νμ΄μ§μμ κΈ°μ νλ ν¨μλ€μ μ΄κΈ°ν λμ΄ μμ§ μμ λ½μ μ μ©νλ κ²°κ³Όλ κ·μ λμ΄ μμ§ μλ€.
pthread_spin_init(3)μ NOTESλ₯Ό μ£Όμ κΉκ² μ½μ΄ 보λΌ.
pthread_spin_destroy(3), pthread_spin_init(3), pthreads(7)
2017-09-30