次の方法で共有


CSemaphore クラス

クラス CSemaphore のオブジェクトは「セマフォ」を表します—一つ以上のプロセスの限られた数のスレッドだけがリソースにアクセスできるようにする同期オブジェクトは、現在指定したリソースにアクセスするスレッドの数を保持します。

class CSemaphore : public CSyncObject

メンバー

パブリック コンストラクター

名前

説明

CSemaphore::CSemaphore

CSemaphore オブジェクトを構築します。

解説

セマフォは、ユーザーの限られた数をサポートできる共有リソースへのアクセスの制御に便利です。 CSemaphore のオブジェクトの現在の計算が許可される追加のユーザーの数です。 カウントがゼロに達すると、CSemaphore のオブジェクトによって制御されるリソースを使用するすべての試行はシステムのキューに挿入し、までの待機時間など、または計算は 0 以上に発生します。 マネージ リソースを同時にアクセスできるユーザーの最大数は CSemaphore のオブジェクトの構築時に指定されます。

必要な場合 CSemaphore のオブジェクトを使用するには、CSemaphore のオブジェクトを構築します。 アプリケーションが最初に、要素を所有することが待機する、セマフォの名前を指定します。 コンストラクターから戻るとセマフォにアクセスできます。 被制御リソースにアクセスすると CSyncObject::Unlock を呼び出します。

CSemaphore のオブジェクトを使用するための代替メソッドは、制御するクラスのデータ メンバーとして、CSemaphore 型の変数を追加することです。 マネージ オブジェクトの構築時に、セマフォのカウントの初期のアクセス、最大のアクセスの計算および名前 (プロセス境界をまたいで使用する場合)、および必要なセキュリティ属性を指定する CSemaphore データ メンバーのコンストラクターを呼び出します。

最初に制御されているリソースにアクセスする CSingleLock 型の変数を作成したり、リソースにアクセスのメンバー関数の CMultiLock を入力するに CSemaphore のこの方法でオブジェクト。 次に、ロック オブジェクトの Lock のメンバー関数 ( CSingleLock::Lock) を呼び出します。 この時点で、スレッドは、リソースが解放されるリソースの待機時間にアクセス権を獲得、アクセス権を獲得するか、待機し、リソースを解放すると時間など、リソースへのアクセスを表示できないことができます。 いずれの場合も、リソースはスレッド セーフな方法でアクセスされています。 リソースを解放する、ロック オブジェクトの Unlock のメンバー関数 (たとえば、) CSingleLock::Unlock使用する、またはスコープから離れるへのロック オブジェクトを許可します。

また、CSemaphore のオブジェクトのスタンドアロンを作成し、被制御リソースにアクセスする前に明示的にアクセスします。 このメソッドは、がソース・コードを読む場合は、さらに明確によりエラーが発生しやすくなります。

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

継承階層

CObject

CSyncObject

CSemaphore

必要条件

ヘッダー : afxmt.h

参照

関連項目

CSyncObject クラス

階層図