| 日本−日本語 |
|
|
|
![]() |
HP-UX リファレンス: セクション 3 : ライブラリ (N~Z) > ppthread_mutex_lock(3T)pthread ライブラリHP-UX 11i Version 2: September 2004 |
|
名称pthread_mutex_lock(), pthread_mutex_trylock() ― mutex のロックまたはロックの試行 構文#include <pthread.h> 説明pthread_mutex_lock() 関数は、mutex オブジェクトの mutex をロックします。 呼び出しスレッドが mutex を取得する方法は、mutex の type 属性で異なります。 この操作は、 mutex で示される mutex オブジェクトをロック状態にし、その所有者を呼び出しスレッドにして戻ります。 mutex の type 属性が PTHREAD_MUTEX_NORMAL の場合、デッドロックの検出は行われません。 mutex を再度ロックしようとすると、デッドロックが発生します。 スレッドが、自分でロックしていない mutex やロック解除されている mutex のロックを解除しようとすると、結果は不定になります。 mutex の type 属性が PTHREAD_MUTEX_ERRORCHECK の場合、mutex の所有者情報は保持されます。 スレッドが、すでにロック済みの mutex を再度ロックしようとすると、エラーが返されます。 スレッドが、自分でロックしていない mutex やロック解除されている mutex のロックを解除しようとすると、エラーが返されます。 mutex の type 属性が PTHREAD_MUTEX_RECURSIVE の場合、mutex の所有者情報とロックカウントが保持されます。 スレッドが最初に mutex の取得に成功すると、count フィールドに 1 が設定されます。 スレッドがこの mutex をロックするたびに、count フィールドは 1 ずつ増やされます。 スレッドが mutex のロックを解除するたびに、count フィールドは 1 ずつ減らされます。 count フィールドが 0 に達すると、mutex は、他のスレッドから取得できるようになります。 スレッドが、自分でロックしていない mutex をロック解除しようとすると、エラーが返されます。 mutex の type 属性が PTHREAD_MUTEX_NO_OWNER_NP の場合、デッドロックの検出は行われません。 mutex を再度ロックしようとすると、デッドロックになります。 スレッドは、自分でロックしていない mutex をロック解除することができます。 ロック解除されている mutex のロックを解除しようとすると、結果は不定になります。 mutex の type 属性が PTHREAD_MUTEX_DEFAULT の場合、mutex を再帰的にロックしようとすると、結果は不定になります。 スレッドが、自分でロックしていない mutex をロック解除しようとすると、結果は不定です。 ロックされていない mutex のロックを解除しようとすると、結果は不定です。 関数 pthread_mutex_trylock() は、最初の試みで mutex で示される mutex オブジェクトを取得することができない場合には、呼び出しがエラーで即座に戻るという点を除いては、 pthread_mutex_lock() 関数とまったく同じです。 mutex を待っているスレッドにシグナルが配信された場合、シグナルハンドラーから戻ると、スレッドは中断がなかったかのように mutex 待機を再開します。 戻り値正常終了すると pthread_mutex_lock() と pthread_mutex_trylock() は 0 を返します。 それ以外の場合、エラーの内容を表すエラー番号を返します (errno 変数は使用しません)。 エラー以下の現象が発生した場合、 pthread_mutex_lock() と pthread_mutex_trylock() 関数は、該当するエラー番号を返します。
以下の現象が発生した場合、 pthread_mutex_trylock() 関数は、該当するエラー番号を返します。
以下の現象が発生した場合、 pthread_mutex_lock() と pthread_mutex_trylock() 関数は、該当するエラー番号を返します。
以下のいずれかのエラーが発生した場合、 pthread_mutex_lock() 関数は該当するエラー番号を返します。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||