次の方法で共有


CMultiLock::Lock

CMultiLock コンストラクターに渡された同期オブジェクトが制御しているリソースの 1 つ以上へのアクセス権を取得します。

DWORD Lock(
   DWORD dwTimeOut = INFINITE,
   BOOL bWaitForAll = TRUE,
   DWORD dwWakeMask = 0 
);

パラメーター

  • dwTimeOut
    同期オブジェクトが利用できる状態 (シグナル状態) になるのを待つ時間を指定します。 INFINITE を指定すると、Lock は、オブジェクトがシグナル状態になるまで復帰しないで待ちます。

  • bWaitForAll
    待機するすべてのオブジェクトが同時にシグナル状態になる必要があるかどうかを指定します。 FALSE を指定すると、Lock は待機しているオブジェクトの 1 つでもシグナル状態になると復帰します。

  • dwWakeMask
    待機を中止できるようにするほかの条件を指定します。 指定できるオプションのリストについては、Windows SDK の「MsgWaitForMultipleObjects」を参照してください。

戻り値

Lock が失敗した場合は、-1 を返します。 成功した場合は、次の値の 1 つを返します。

  • WAIT_OBJECT_0 から WAIT_OBJECT_0 + (オブジェクト数 -1) の間。

    bWaitForAll が TRUE のときは、すべてのオブジェクトがシグナル状態 (利用できる状態) です。 bWaitForAll が FALSE のときは、戻り値 - WAIT_OBJECT_0 の値が、シグナル状態 (利用できる状態) になったオブジェクトの配列でのインデックスになります。

  • WAIT_OBJECT_0 + (オブジェクト数)。

    dwWakeMask で指定されたイベントが、スレッドの入力キューで利用できます。

  • WAIT_ABANDONED_0 から WAIT_ABANDONED_0 + (オブジェクト数 -1) の間。

    bWaitForAll が TRUE のときは、オブジェクトはすべてシグナル状態になり、少なくとも 1 つのオブジェクトは放棄されたミューテックス オブジェクトになります。 bWaitForAll が FALSE のときは、戻り値 - WAIT_ABANDONED_0 の値は、待機を満たす放棄されたミューテックス オブジェクトの、オブジェクト配列でのインデックスになります。

  • WAIT_TIMEOUT

    待機に成功しないまま、dwTimeOut で指定されたタイムアウト間隔を経過しました。

解説

bWaitForAll が TRUE のときは、Lock はすべての同期オブジェクトが同時にシグナル状態になるとすぐに正常復帰します。 bWaitForAll が FALSE のときは、Lock は 1 つ以上の同期オブジェクトがシグナル状態となるとすぐに復帰します。

Lock がすぐに復帰できないときは、復帰する前にパラメーター dwTimeOut で指定されたミリ秒数待機します。 dwTimeOutINFINITE のときは、Lock はオブジェクトのアクセス権を取得するか、dwWakeMask で指定した条件になるまで復帰しません。 それ以外は、Lock が同期オブジェクトを取得できれば正常に復帰し、できないときは失敗します。

必要条件

**ヘッダー:**afxmt.h

参照

参照

CMultiLock クラス

階層図

その他の技術情報

CMultiLock のメンバー