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

ブロックしないで行う mutex のロック

pthread_mutex_trylock(3T)

pthread_mutex_trylock() は、mp が指す mutex のロックを試みます。

プロトタイプ:
int	pthread_mutex_trylock(pthread_mutex_t *mp); 
#include <pthread.h>

pthread_mutex_t mp;
int ret;

ret = pthread_ mutex_trylock(&mp); /* mutex のロックを試みる */

この関数はブロックしない点を除いて、pthread_mutex_lock() と同じ働きをします。mutex がすでにロックされている場合は、ただちにエラーを返します。mutex がロックされていなければ、呼び出しスレッドがロックを獲得します。

戻り値

正常終了時は 0 です。それ以外の戻り値は、エラーが発生したことを示します。以下のいずれかの条件が検出されると、この関数は失敗し、次の値を戻します。


EBUSY

mp が指す mutex がすでにロックされています。


EINVAL

mp で指定された値が、初期化された mutex オブジェクトを表していません。