windows临界区使用小结
程序员文章站
2022-07-05 10:34:35
...
#include <iostream>
#include <functional>
#include <thread>
#include <mutex>
#include <Windows.h>
using namespace std;
/*注意:临界区中,相同的临界区变量可以在同一个线程当中多次进入,相当于可以多次上锁,
但是必须要加入临界区的次数和离开次数一样,否则,如果其它的线程想进入临界区的
话,有可能会进入不了*/
CRITICAL_SECTION winsec;//声明一个临界区变量, <Windows.h>
int i = 0;
void add()
{
for (int x = 0; x < 10000000; x++)
{
EnterCriticalSection(&winsec);//进入临界区
++i;
LeaveCriticalSection(&winsec);//离开临界区
}
}
int main()
{
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF);//查看内存泄漏
InitializeCriticalSection(&winsec);//使用临界区之前必须初始化
std::thread t1(add);
std::thread t2(add);
t1.join();
t2.join();
cout << i << endl;
_CrtDumpMemoryLeaks();/*查看内存泄漏*/
}
上一篇: 安装elasticsearch
下一篇: C#:蓝牙串口读数据和写数据