スピンロックを獲得し、ロックが別のスレッドによって保持されている場合はただちに失敗するには、pthread_spin_trylock(3C) 関数を使用します。
int pthread_spin_trylock(pthread_spinlock_t *lock);
#include <pthread.h> pthread_spinlock_t lock; int ret; ret = pthread_spin_trylock(&lock); /* try to lock the spin lock */
pthread_spin_trylock() 関数は、正常終了時に 0 を返します。それ以外の場合は、次のいずれかのエラーコードが返されます。
EBUSY
説明:スレッドが現在スピンロックを所有しています。
EINVAL
説明:lock で指定された値が、初期化されたスピンロックオブジェクトを表していません。