CMultiLock クラス
更新 : 2007 年 11 月
マルチスレッド プログラムで複数のリソースのアクセス制御に使うアクセス コントロール機構を表します。
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