EnterCriticalSection简单使用

1188
2023/8/29 10:58:43
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

EnterCriticalSection是C++中的一个函数,用于进入一个临界区。临界区是一段代码,同一时间只能有一个线程执行。

下面是EnterCriticalSection的简单使用示例:

#include <iostream>
#include <Windows.h>
// 定义一个临界区
CRITICAL_SECTION criticalSection;
void workerThread()
{
// 进入临界区
EnterCriticalSection(&criticalSection);
// 在临界区内执行一些操作
std::cout << "Worker thread executing" << std::endl;
// 离开临界区
LeaveCriticalSection(&criticalSection);
}
int main()
{
// 初始化临界区
InitializeCriticalSection(&criticalSection);
// 创建一个线程
HANDLE threadHandle = CreateThread(nullptr, 0, (LPTHREAD_START_ROUTINE)workerThread, nullptr, 0, nullptr);
// 等待线程执行完毕
WaitForSingleObject(threadHandle, INFINITE);
// 关闭线程句柄
CloseHandle(threadHandle);
// 删除临界区
DeleteCriticalSection(&criticalSection);
return 0;
}

在上面的示例中,我们首先定义了一个临界区 criticalSection。然后,在 workerThread 函数中我们使用 EnterCriticalSection 进入临界区,然后在临界区内执行一些操作,最后使用 LeaveCriticalSection 离开临界区。

main 函数中,我们首先初始化临界区,然后创建一个线程来执行 workerThread 函数。我们使用 WaitForSingleObject 来等待线程执行完毕,然后关闭线程句柄,最后删除临界区。

使用临界区可以确保在多线程环境下某一段代码只能被一个线程执行,从而避免了竞争条件和数据不一致的问题。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: CountDownTimer倒计时,简单了解及使用,快速上手