CMultiLock クラス

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

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 のメンバー