<Return[R]><Top>

ReleaseMutex

Declare Function Api_ReleaseMutex& Lib "kernel32" Alias "ReleaseMutex" (ByVal hMutex&)

Declare Function ReleaseMutex Lib "kernel32" (ByVal hMutex As Long) As Long

指定されたミューテックス(mutually exclusive:相互排他)オブジェクトの所有権を解放する。

パラメータ
hMutex
    ミューテックスオブジェクトのハンドルを指定する。CreateMutex 関数または OpenMutex 関数が返したハンドルを指定する。
 

戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。

解説
    呼び出し側スレッドが、指定したミューテックスオブジェクトを所有していない場合、この関数は失敗する。
    スレッドは、「wait functions」(待機関数)のいずれか(WaitForSingleObject 関数など)を使って、ミューテックスの所有権を取得す

    る。スレッドがミューテックスオブジェクトを作成する際は、待機関数を使わずに、即座にミューテックスの所有権を取得できる。

    スレッドがミューテックスオブジェクトを所有する必要がなくなった時点で、ReleaseMutex 関数を使って所有権を解放する。
    各スレッドはミューテックスの所有権を取得した後は、自らの実行をブロックすることなく、待機関数を追加で呼び出すことができる。

    この結果、スレッドが既に自ら所有しているミューテックスを待機しようとしてデッドロックに陥ることを防止できる。ただし、ミューテックスが待

    機条件を満たすたびに、スレッドは所有権を放棄するために ReleaseMutex 関数を 1 回呼び出さなければならない。