マルチスレッドのプログラミング

非ブロックスピンロックの獲得

スピンロックを獲得し、ロックが別のスレッドによって保持されている場合はただちに失敗するには、pthread_spin_trylock(3C) 関数を使用します。

pthread_spin_trylock() の構文

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() の戻り値

pthread_spin_trylock() 関数は、正常終了時に 0 を返します。それ以外の場合は、次のいずれかのエラーコードが返されます。


EBUSY

説明:

スレッドが現在スピンロックを所有しています。


EINVAL

説明:

lock で指定された値が、初期化されたスピンロックオブジェクトを表していません。