CMultiLock クラス

更新 : 2007 年 11 月

マルチスレッド プログラムで複数のリソースのアクセス制御に使うアクセス コントロール機構を表します。

class CMultiLock

解説

CMultiLock には、基本クラスはありません。

同期クラスの CSemaphoreCMutex、および CEvent を使うには、CMultiLock オブジェクトまたは CSingleLock オブジェクトのいずれかを作成して、同期オブジェクトでの待機や解放を行います。同時に使用できる複数のオブジェクトがある場合は、CMultiLock を使用します。一度に 1 つのオブジェクトだけを待機する必要がある場合は、CSingleLock を使用します。

CMultiLock オブジェクトを使うためには、まず待機する必要のある同期オブジェクトの配列を作成します。次に、制御されるリソースのクラスの内部で、CMultiLock オブジェクトのコンストラクタを呼び出します。その後、リソースが利用できる状態 (シグナル状態) かどうかを判断するために、Lock メンバ関数を呼び出します。シグナル状態のものがあるときは、メンバ関数の残りの部分を続行します。利用できるリソースがないときは、リソースが解放されるまで指定された時間待機するか、失敗して復帰します。リソースの使用完了後は、CMultiLock オブジェクトを再利用するときは、Unlock を呼び出します。再利用しないときは、CMultiLock オブジェクトを破棄します。

CMultiLock オブジェクトは、スレッドが応答しなくてはならない CEvent オブジェクトをたくさん持っているときに最も役に立ちます。すべての CEvent ポインタを含む配列を作成し、Lock を呼び出します。この結果、イベントの 1 つがシグナル状態になるまでスレッドは待機状態になります。

CMultiLock オブジェクトの使い方の詳細については、「マルチスレッド : 同期クラスの使用法」を参照してください。

必要条件

ヘッダー : afxmt.h

参照

参照

階層図

その他の技術情報

CMultiLock のメンバ