CMutex クラス
"ミューテックス" を表します。これは、1 つのスレッドがリソースに排他アクセスできるようにする同期オブジェクトです。
class CMutex : public CSyncObject
解説
ミューテックスは、一度に 1 つのスレッドだけが、データ、またはほかの制御されたリソースをアクセスできるようにするときに有用です。 たとえば、リンク リストへのノードの追加は、一度に 1 つのスレッドだけが行うことができます。 CMutex オブジェクトを使ってリンク リストを制御すると、一度に 1 つのスレッドだけがリストにアクセスできるようになります。
CMutex オブジェクトを使うには、必要になったときに CMutex オブジェクトを構築します。 待機するミューテックスの名前と、アプリケーションが最初にそれを所有するように指定します。 コンストラクターから戻ると、ミューテックスにアクセスできます。 制御対象になっているリソースのアクセスを終了したら CSyncObject::Unlock を呼び出します。
CMutex オブジェクトのもう 1 つの使い方は、制御するクラスのデータ メンバーとして、CMutex 型の変数を追加することです。 制御されるオブジェクトを構築するときに、ミューテックスを最初に所有するかどうか、ミューテックス名 (プロセス間にまたがって使用される場合)、適切なセキュリティ属性を指定して、CMutex データ メンバーのコンストラクターを呼び出します。
この方法で CMutex オブジェクトが制御するオブジェクトにアクセスするには、まずリソースのアクセス メンバー関数に CSingleLock 型、または CMultiLock 型の変数を作成します。 その後、ロック オブジェクトの Lock メンバー関数 (たとえば、CSingleLock::Lock) を呼び出します。 この時点でスレッドは、リソースにアクセスできるようになるか、リソースが解放されてアクセスできるようになるまで待つか、リソースが解放されるのを待ってタイムアウトとなってリソースへのアクセスができないかのいずれかの状態になります。 いずれの場合も、リソースはスレッド セーフな方法でアクセスされています。 リソースを解放するには、ロック オブジェクトの Unlock メンバー関数 (たとえば、CSingleLock::Unlock) を呼び出すか、ロック オブジェクトがスコープ外になるようにします。
使用しての詳細についてはCMutexオブジェクトの資料を参照して「マルチ スレッド:同期クラスの使用方法。
必要条件
**ヘッダー:**afxmt.h