Silphire (7255) の日記

2003 年 02 月 08 日
午後 11:40

pthread日記(33) - Mutex overview

Mutexとは、あるリソースに対して複数のスレッドがリソースの取り合いをして、競合を起こさないようにする為の仕組みです。

まず、複数のスレッド間で参照するリソースに対してそれぞれMutexを用意します。リソースを参照する時は、Mutexをロックしてリソースを使用中である事を他のスレッドに対して明示します。リソースの使用が終わったら、Mutexをアンロックして他のスレッドにリソースを解放します。

Mutexをロックする時に、既にそのMutexが使用中だった場合の動作は、Mutexのタイプによって異なりますが、Mutexの使用権が回ってくるまでブロックするか、あるいはロックに失敗したとみなします。

リソースを長時間占有する場合は、Mutexを使うべきではありません。Mutexを用いたリソースの占有は、出来る限り短時間で済む物に対してのみ行うようにします。長時間リソースを占有したい場合は、Condition Variableを使うべきです。

Mutexの確保・ロック・アンロック・解放は全てプログラマの手に委ねられます。pthreadが何かしてくれるという事はありません。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

アレゲはアレゲを呼ぶ -- ある傍観者

処理中...