溫馨提示×

C++ EnterCriticalSection簡單使用

c++
小云
126
2023-08-09 15:24:43
欄目: 編程語言

EnterCriticalSection函數是用來進入臨界區的函數,用于保護共享資源的訪問。下面是一個簡單的使用示例:

#include <iostream>
#include <Windows.h>
CRITICAL_SECTION g_criticalSection;
DWORD WINAPI ThreadFunc(LPVOID lpParam)
{
// 進入臨界區
EnterCriticalSection(&g_criticalSection);
// 訪問共享資源
std::cout << "Thread " << GetCurrentThreadId() << " entered critical section" << std::endl;
// 離開臨界區
LeaveCriticalSection(&g_criticalSection);
return 0;
}
int main()
{
// 初始化臨界區
InitializeCriticalSection(&g_criticalSection);
// 創建線程
HANDLE hThread1 = CreateThread(NULL, 0, ThreadFunc, NULL, 0, NULL);
HANDLE hThread2 = CreateThread(NULL, 0, ThreadFunc, NULL, 0, NULL);
// 等待線程結束
WaitForSingleObject(hThread1, INFINITE);
WaitForSingleObject(hThread2, INFINITE);
// 銷毀臨界區
DeleteCriticalSection(&g_criticalSection);
return 0;
}

上面的示例中,首先定義了一個全局的臨界區變量 g_criticalSection,然后在 ThreadFunc 中使用 EnterCriticalSection 進入臨界區,訪問共享資源,最后使用 LeaveCriticalSection 離開臨界區。在 main 函數中,先使用 InitializeCriticalSection 初始化臨界區,然后創建兩個線程來執行 ThreadFunc,最后使用 DeleteCriticalSection 銷毀臨界區。這樣就可以保證兩個線程同時只有一個線程可以進入臨界區,避免了共享資源的競爭問題。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女