C++ EnterCriticalSection簡(jiǎn)單使用
EnterCriticalSection作用
用途主要是在多線程中,當(dāng)開(kāi)啟多線程中,要控制函數(shù)的執(zhí)行順序時(shí),就需要用到它了,就是假如多個(gè)線程同時(shí)訪問(wèn)這個(gè)函數(shù)時(shí),需要控制執(zhí)行的順序,可以使用它去控制順序。
定義一個(gè)全局的鎖 CRITICAL_SECTION的實(shí)例
和一個(gè)靜態(tài)全局變量
- CRITICAL_SECTION cs;//可以理解為鎖定一個(gè)資源
- static int n_AddValue = 0;//定義一個(gè)靜態(tài)的全部變量n_AddValue實(shí)戰(zhàn)
一、首先是它的使用步驟:
//1.創(chuàng)建全局互斥量 CRITICAL_SECTION g_cs; //2.初始化互斥量 InitializeCriticalSection(&g_cs);//必須添加,否則會(huì)報(bào)錯(cuò) //3.進(jìn)入 EnterCriticalSection(&g_cs); //4.離開(kāi) LeaveCriticalSection(&g_cs);
二、示例代碼:
// DefDemo.cpp : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
//
#include "stdafx.h"
using namespace std;
CRITICAL_SECTION g_cs;
struct gParam
{
int m;
int n;
};
void WINAPI getMax(gParam * cur_Param)
{
EnterCriticalSection(&g_cs);
if (cur_Param->m > cur_Param->n)
{
cout << "MAX_VALUE:"<< cur_Param->m << endl;
}
else
{
cout << "MAX_VALUE:"<< cur_Param->n << endl;
}
LeaveCriticalSection(&g_cs);
return;
}
int _tmain(int argc, _TCHAR* argv[])
{
InitializeCriticalSection(&g_cs);
gParam * cur_Param = new gParam;
cur_Param->m = 2;
cur_Param->n = 5;
gParam * cur_NexParam = new gParam;
cur_NexParam->m = 10;
cur_NexParam->n = 2;
CreateThread(nullptr,0,(LPTHREAD_START_ROUTINE)getMax,cur_Param,0,0);
CreateThread(nullptr,0,(LPTHREAD_START_ROUTINE)getMax,cur_NexParam,0,0);
system("pause");
delete cur_Param;
return 0;
}
運(yùn)行結(jié)果:

到此這篇關(guān)于C++ EnterCriticalSection簡(jiǎn)單使用的文章就介紹到這了,更多相關(guān)C++ EnterCriticalSection內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++ LeetCode1945題解字符串轉(zhuǎn)化后的各位數(shù)字之和
這篇文章主要為大家介紹了C++ LeetCode1945題解字符串轉(zhuǎn)化后的各位數(shù)字之和示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
QT使用Http協(xié)議通信的實(shí)現(xiàn)示例
使用QT進(jìn)行應(yīng)用開(kāi)發(fā)時(shí),有時(shí)候需要進(jìn)行客戶端和服務(wù)端的網(wǎng)絡(luò)通信,本文主要介紹了QT使用Http協(xié)議通信的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12
C語(yǔ)言strcat函數(shù)詳解:字符串追加的利器
strcat函數(shù)用于將源字符串追加到目標(biāo)字符串的末尾,并返回一個(gè)指向目標(biāo)字符串的指針,它可以實(shí)現(xiàn)字符串的拼接操作2024-08-08
C語(yǔ)言中計(jì)算函數(shù)執(zhí)行時(shí)間的三種方式
本文主要介紹了C語(yǔ)言中計(jì)算函數(shù)執(zhí)行時(shí)間的三種方式,主要包括clock(),timeb和time,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
解析C++中的for循環(huán)以及基于范圍的for語(yǔ)句使用
這篇文章主要介紹了解析C++中的for循環(huán)以及基于范圍的for語(yǔ)句使用,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2016-01-01
c語(yǔ)言float類型小數(shù)點(diǎn)后位數(shù)
在本篇文章里小編給大家整理了關(guān)于c語(yǔ)言float類型小數(shù)點(diǎn)后面有幾位的相關(guān)知識(shí)點(diǎn),需要的朋友們可以學(xué)習(xí)下。2020-02-02
隊(duì)列的動(dòng)態(tài)鏈?zhǔn)酱鎯?chǔ)實(shí)現(xiàn)代碼分享
DynaLnkQueue.cpp - 動(dòng)態(tài)鏈?zhǔn)疥?duì)列,即隊(duì)列的動(dòng)態(tài)鏈?zhǔn)酱鎯?chǔ)實(shí)現(xiàn)2014-02-02

