C++ EnterCriticalSection 関数:基本と使い方
C++で、EnterCriticalSectionはWindows APIによって提供されるクリティカルセクションのロックメカニズムの一種です。これは共有リソースへのアクセスを制限し、常に1つのスレッドだけがリソースにアクセスできるようにします。
EnterCriticalSectionを使用する基本的な手順は次のとおりです。
- 最初、クリティカルセクションオブジェクトを定義して、クリティカルセクションを表す。
CRITICAL_SECTION cs;
- 共有リソースを保護する必要がある場合には、EnterCriticalSection関数を使用してクリティカルセクションをロックします。
EnterCriticalSection(&cs);
- 共有リソースに対する操作を実行する。
- クリティカルセクションを解放するために、LeaveCriticalSection関数を使用してください。
LeaveCriticalSection(&cs);
完全なサンプルコードは次のようになります:
#include <Windows.h>
#include <iostream>
CRITICAL_SECTION cs;
int main() {
// 初始化临界区
InitializeCriticalSection(&cs);
// 进入临界区
EnterCriticalSection(&cs);
// 访问共享资源
std::cout << "Accessing shared resource" << std::endl;
// 离开临界区
LeaveCriticalSection(&cs);
// 销毁临界区
DeleteCriticalSection(&cs);
return 0;
}
EnterCriticalSectionとLeaveCriticalSectionは対になる必要があり、共有リソースへの操作はクリティカルセクション内で行う必要があります。プログラムを終了する前にDeleteCriticalSectionを呼び出して、クリティカルセクションを破棄する必要があります。