mutex が指す mutex をロック解除するには、pthread_mutex_unlock(3C) を使用します。
int pthread_mutex_unlock(pthread_mutex_t *mutex);
#include <pthread.h> pthread_mutex_t mutex; int ret; ret = pthread_mutex_unlock(&mutex); /* release the mutex */
pthread_mutex_unlock() は、mutex が指す mutex オブジェクトを解放します。mutex を解放する方法は、mutex の 型属性に依存します。pthread_mutex_unlock() が呼び出されたときに、mutex オブジェクトでブロックされているスレッドがある場合、mutex が使用可能な状態になると、スケジューリングポリシーに基づいて mutex を獲得するスレッドが決定されます。PTHREAD_MUTEX_RECURSIVE のタイプの mutex の場合、mutex が使用可能になるのは、カウントが 0 になり、pthread_mutex_unlock を呼び出したスレッドがこの mutex のロックを解除したときです。
pthread_mutex_unlock() は、正常終了時に 0 を返します。それ以外の戻り値は、エラーが発生したことを示します。以下の条件が検出されると、この関数は失敗し、次の値を返します。
EPERM
説明:現在のスレッドは mutex を所有していません。