• 締切済み

pthread_mutex_unlock失敗?

pthreadプログラムで、mutex_lockするスレッドとmutex_unlockするスレッドが別スレッドとなっている場合、mutex_unlockが失敗することはあるでしょうか。mutexの初期設定(mutex_init)時、スレッドの属性は特に指定していません。 OSはHP-UXでCでコードを記述しています。 単発のプログラムで動作確認をした限りでは無事にunlockされているようでした。 (lockスレッドとunlockスレッドが別ということ自体が少し危険なことだとは思うのですが・・・)

みんなの回答

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

Linuxのpthread実装の場合ですが http://www.linux.or.jp/JM/html/glibc-linuxthreads/man3/pthread_mutex_unlock.3.html を見ると、エラー検査を行うmutexの場合にはpthread_mutex_unlockがEPERMを返すようです。 > lockスレッドとunlockスレッドが別ということ自体が少し危険なことだとは思うのですが・・・ 「少し危険」どころか、プログラムの設計をやり直したほうが良いように思われます。

nishimry
質問者

お礼

ご回答ありがとうございました。 リンクを確認しました。 プログラムではmutexの設定をデフォルトで行っていますので、unlockでは常にアンロック状態に戻すとなっていましたが、実は戻すことができない状況もありえるのではないかと考えています。(OSの違い(LINUXとHP-UX)ということもありますが。) 過去に作成されたスレッドプログラムで発生した障害調査として確認していますので、設計の見直しにこぎつけるにはまず障害の原因を究明しなければならないのですが、やはり「設計に難有り」ですよね。

すると、全ての回答が全文表示されます。

関連するQ&A