スレッドがpthread_mutex_lock
を正常に呼び出すと仮定すると、同じスレッド内のpthread_mutex_unlock
への呼び出しが失敗する可能性はありますか?もしそうなら、スレッドを中止する以外に実際に何かすることができますか? this pageからpthread_mutex_unlockの失敗をどうやって処理しますか?
if(pthread_mutex_lock(&m) == 0)
{
// got the lock, let's do some work
if(pthread_mutex_unlock(&m) != 0) // can this really fail?
{
// ok, we have a lock but can't unlock it?
}
}
、pthread_mutex_unlock()
のための可能なエラーは、次のとおり
[EINVAL] ミューテックスで指定された値が初期化 ミューテックスオブジェクトを参照しません。
ロックが成功した場合、これは失敗しないでしょう。
ミューテックスため 再帰的ロックの最大数を超えたため、[EAGAIN] ミューテックスを取得することができませんでした。
本当に?ロックを解除するには?
[EPERM] 現在のスレッドがミューテックスを所有していない:場合
pthread_mutex_unlockの()関数が失敗することがあります。再び
ロックが成功した場合、これはまた、発生しません。
だから、私の考えは、成功したロックは、このような状況で、その後がある場合は、アンロックは、エラーチェックとその後の処理コードは無意味作る失敗することはありませんです。あなたはmanページを信じるならば、あなたのエラーケースが発生することができないように思わ
The pthread_mutex_unlock() function may fail if:
EPERM
The current thread does not own the mutex.
These functions shall not return an error code of [EINTR].
:pthread_mutex_unlockのためのmanページから
ありがとう、それは私の考えと同様です。私はなぜ質問しているのかをもっと明確にするために質問を更新しました。私は答えを受け入れる前に他の入力を得ることができるかどうかを知りたい。 –