方式 CCriticalSectionクラスのオブジェクトを表す「クリティカル セクション"? がリソースまたはコード セクションにアクセスするには、一度に 1 つのスレッドが同期オブジェクト。クリティカル セクションは、データまたはいくつかの他のコントロールのリソースを変更するには、一度に 1 つだけのスレッドをできる場合に便利です。たとえば、ノード、リンクのリストに追加するだけ 1 つのスレッドによって同時にされるべきプロセスです。方式 CCriticalSectionオブジェクトを使用してリンク リストを制御するには、一度に 1 つだけのスレッド リストへのアクセスを得ることができます。
クリティカル セクションは速度が重要なの場合に、プロセス境界をまたがってリソースは使用されませんミュー テックスの代わりに使用されます。ミュー テックスの MFC の使用の詳細についてを参照してくださいCMutex。
方式 CCriticalSectionオブジェクトを使用するには、それが必要な場合、方式 CCriticalSectionオブジェクトを構築します。コンス トラクターが返されるとき、クリティカル セクションにアクセスできます。終わったらunlock を呼び出して、クリティカル セクションへのアクセス。
この方法で方式 CCriticalSectionオブジェクトによって制御されるリソースにアクセスするには、 CSingleLock型の変数を作成する最初 をリソースのアクセス メンバー関数。ロック オブジェクトのLockメンバー関数 (たとえば、 CSingleLock::Lock) を呼び出してください。この時点で、スレッドはリソースへのアクセスを得るためがリソースの解放されるとアクセス、またはリリースされるリソースと時間をリソースへのアクセスに失敗するを待つを待ちます。いずれの場合では、リソースがスレッド セーフな方法でアクセスされました。リソースを解放するには、ロック オブジェクトのロックを解除するメンバー関数 (たとえば、 CSingleLock::Unlock) を使用するか、スコープ外には、ロック オブジェクトを許可。
また、方式 CCriticalSectionオブジェクトはスタンドアロン、作成し、制御されるリソースにアクセスしようとする前に明示的にアクセスできます。このメソッドより明確に誰かがあなたのソースコードを読みながら、ロックし、クリティカル セクションの前に、と後のアクセスのロックを解除する必要がありますよりエラーになります。
方式 CCriticalSectionオブジェクトを使用しての詳細については、参照してください 「マルチ スレッド: 同期クラスの使用方法でVisual の C++ プログラマのガイド。
#include lt;afxmt.h>
サンプル特価; MFC サンプル MTGDI(&N)
参照特価;CMutex(&N)