中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

C++ EnterCriticalSection簡單使用

c++
小云
112
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
古蔺县| 高安市| 遂溪县| 金乡县| 广水市| 五峰| 宁陕县| 天长市| 安康市| 赤水市| 华池县| 昭觉县| 柘城县| 鸡东县| 包头市| 安康市| 宜黄县| 新源县| 修武县| 柯坪县| 盐城市| 台南县| 沾化县| 台北市| 花垣县| 汽车| 杭锦后旗| 潼关县| 锦州市| 绥滨县| 昭苏县| 卓尼县| 荃湾区| 库车县| 都匀市| 连州市| 章丘市| 江都市| 高尔夫| 临澧县| 中超|