CMultiLock クラス
マルチスレッド プログラムで複数のリソースのアクセス制御に使うアクセス コントロール機構を表します。
class CMultiLock
解説
CMultiLock には、基本クラスはありません。
同期クラスの CSemaphore、CMutex、および CEvent を使うには、CMultiLock オブジェクトまたは CSingleLock オブジェクトのいずれかを作成して、同期オブジェクトでの待機や解放を行います。 同時に使用できる複数のオブジェクトがある場合は、CMultiLock を使用します。 一度に 1 つのオブジェクトだけを待機する必要がある場合は、CSingleLock を使用します。
CMultiLock オブジェクトを使うためには、まず待機する必要のある同期オブジェクトの配列を作成します。 次に、制御されるリソースのクラスの内部で、CMultiLock オブジェクトのコンストラクターを呼び出します。 その後、リソースが利用できる状態 (シグナル状態) かどうかを判断するために、Lock メンバー関数を呼び出します。 シグナル状態のものがあるときは、メンバー関数の残りの部分を続行します。 利用できるリソースがないときは、リソースが解放されるまで指定された時間待機するか、失敗して復帰します。 リソースの使用完了後は、CMultiLock オブジェクトを再利用するときは、Unlock を呼び出します。再利用しないときは、CMultiLock オブジェクトを破棄します。
CMultiLock オブジェクトは、スレッドが応答しなくてはならない CEvent オブジェクトをたくさん持っているときに最も役に立ちます。 すべての CEvent ポインターを含む配列を作成し、Lock を呼び出します。 この結果、イベントの 1 つがシグナル状態になるまでスレッドは待機状態になります。
使用する方法の詳細についてはCMultiLockオブジェクトの資料を参照して 「マルチ スレッド:同期クラスの使用方法。
必要条件
**ヘッダー:**afxmt.h