次の方法で共有


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

参照

参照

CSyncObject クラス

階層図

その他の技術情報

CMutex のメンバー