欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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();/*查看内存泄漏*/
}
相关标签: # c++11多线程