可以在多线程中锁定线程,以控制线程的执行顺序。本文通过示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。
目录
EnterCriticalAction 1的作用。首先,使用它的步骤:2。示例代码:
关键行动
它主要用于多线程。多线程启动时,需要控制函数的执行顺序,也就是多个线程同时访问这个函数,需要控制执行顺序,可以用它来控制顺序。
定义全局锁CRITICAL_SECTION的一个实例。
和一个静态全局变量。
临界_截面cs;//可以理解为锁定一个资源
static int n _ AddValue=0;//定义一个静态所有变量n_AddValue。
一、其使用的步骤:
//1.创建全局互斥体
临界截面g _ cs
//2.初始化互斥体
InitializeCriticalSection(g _ cs);//必须添加,否则报错。
//3.进入
enter critical section(g _ cs);
//4.离开
LeaveCriticalSection(g _ cs);
二、示例代码:
//DefDemo.cpp:定义控制台应用程序的入口点。
//
#include 'stdafx.h '
使用命名空间std
临界截面g _ cs
结构gParam
{
int m;
int n;
};
void WINAPI getMax(gParam * cur _ Param)
{
enter critical section(g _ cs);
if (cur_Param-m cur_Param-n)
{
cout ' MAX _ VALUE:' cur _ Param-m endl;
}
其他
{
cout ' MAX _ VALUE:' cur _ Param-n endl;
}
LeaveCriticalSection(g _ cs);
返回;
}
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 _ NEX param-m=10;
cur _ NEX param-n=2;
CreateThread(nullptr,0,(LPTHREAD_START_ROUTINE)getMax,cur_Param,0,0);
CreateThread(nullptr,0,(LPTHREAD_START_ROUTINE)getMax,cur_NexParam,0,0);
系统(“暂停”);
删除cur _ Param
返回0;
}
运行结果:
这就是这篇关于C Entercriticality的简单用法的文章。有关C Entercriticality的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。