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

mutex のロック

pthread_mutex_lock(3T)

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

pthread_mutex_t mp;
int ret;

ret = pthread_ mutex_lock(&mp); /* mutex を獲得する */

pthread_mutex_lock() は、mp が指す mutex をロックします。mutex がすでにロックされている場合は、その mutex が使用可能になるまで呼び出しスレッドがブロックされ、優先順位別の待ち行列に入れられます。pthread_mutex_lock() が戻ると、呼び出しスレッドが mutex をロックした状態になっています。

戻り値

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


EINVAL

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


EDEADLK

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