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

スピンロックの獲得

スピンロックを獲得するには、pthread_spin_lock(3C) を使用します。呼び出しスレッドは、ロックが別のスレッドによって保持されていなければ、そのロックを獲得します。それ以外の場合、スレッドは、そのロックが使用可能になるまで pthread_spin_lock() 呼び出しから復帰しません。呼び出し時に、呼び出しスレッドがロックを保持している場合の結果は不定です。

pthread_spin_lock() の構文

int  pthread_spin_lock(pthread_spinlock_t *lock);
#include <pthread.h>

pthread_spinlock_t lock;
int ret;

ret = pthread_ spin_lock(&lock); /* lock the spinlock */

pthread_spin_lock() の戻り値

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


EDEADLK

説明:

現在のスレッドがすでにそのスピンロックを獲得しています。


EINVAL

説明:

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