CRITICAL_SECTION 学习

简介:   // Critsetion.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include using namespace std; CRITICAL_SECTION g_cs; ...

 

// Critsetion.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <Windows.h>
#include <iostream>
#include <process.h>
using namespace std;


CRITICAL_SECTION g_cs;
char name[]="zhangdongsheng";

unsigned __stdcall ThreadPoc1( void* pArguments)
{
	while (1)
	{
		EnterCriticalSection(&g_cs); //如果此处不对全局变量name进行加锁
		                             //那么输出结果将有可能出现不一致现象
		memset(name,0,sizeof(name));
		strcpy(name,"Thread1");
		Sleep(600);
		cout<<"Thread1 "<<name<<endl;
		LeaveCriticalSection(&g_cs);
	}

	return 0;
}
unsigned __stdcall ThreadPoc2( void* pArguments)
{
	while(1)
	{
		EnterCriticalSection(&g_cs);
		memset(name,0,sizeof(name));
		strcpy(name,"Thread2");
		Sleep(500);
		cout<<"Thread2 "<<name<<endl;
		LeaveCriticalSection(&g_cs);
	}

	return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
	InitializeCriticalSection(&g_cs);
	HANDLE hThread1=(HANDLE)_beginthreadex(NULL,0,ThreadPoc1,NULL,0,NULL);
	HANDLE hThread2=(HANDLE)_beginthreadex(NULL,0,ThreadPoc2,NULL,0,NULL);
	CloseHandle(hThread1);
	CloseHandle(hThread2);
	while(1)
	{
		Sleep(500);
	}
	DeleteCriticalSection(&g_cs);
	return 0;
}

不加锁会出现不一致的情况

加锁后:

相关文章
|
数据可视化 定位技术 Python
基于ArcMap的精美地图可视化绘制--以各省GDP数据为例
大家好,我是志斌~ 今天手把手教大家如何用ArcMap 10.3画分级地图。
2235 0
基于ArcMap的精美地图可视化绘制--以各省GDP数据为例
|
10月前
|
人工智能 算法 机器人
专访汶生|或许你没有听过具身智能实训,但是已经有人这样做了
汶生在2023年底创办TsingtaoAI公司之前,就已经深入具身智能高校实训领域和AI人才培养方面。最近一年,汶生带领核心技术团队完成了具身智能高校实训解决方案、AI Agent应用开发实训解决方案和华为昇腾910B算力卡的大模型部署和调优实训方案。这些方案赋能与高校CS/AI专业的实训和企业IT/AI员工的内训,通过前沿技术和实训解决方案的结合,让学习者可以迅速掌握AI/具身智能/智算行业的核心和前沿技术。
247 10
|
运维 测试技术
通义灵码测评
作为一名运维人员,通过使用通义灵码进行业务、功能及环境测试,显著提高了工作效率。以前需自行查找或编写代码,不仅速度慢且易出错。通义灵码能够快速响应需求,即时生成所需代码,大幅减少错误和修改时间,优化了工作流程。
171 1
|
数据采集 测试技术
常见测试测量接口的比较:PXI、PXIe、PCI、VXI、GPIB、USB
常见测试测量接口的比较:PXI、PXIe、PCI、VXI、GPIB、USB
696 2
|
存储 Kubernetes 数据安全/隐私保护
在K8S中,如何下载harbor的私有项目镜像?
在K8S中,如何下载harbor的私有项目镜像?
|
自然语言处理 图形学 网络架构
Meta发布室内场景重建方法SceneScript
Meta的SceneScript技术革新了室内场景重建,采用基于标记的结构化语言模型,从视频流中预测三维场景。受Transformer和LLMs启发,SceneScript将自然语言处理应用于三维建模,通过场景语言编码器-解码器推断结构化命令。使用大规模合成数据集Aria Synthetic Environments进行训练,SceneScript在建筑布局和3D对象检测上表现出色,具备适应新任务的灵活性。尽管面临细节处理和自动化限制,但其潜力和创新性已得到业界认可。
371 2
Meta发布室内场景重建方法SceneScript
|
开发框架 缓存 运维
阿里云轻量应用服务器与经济型e和通用算力型u1实例区别及选择参考
在目前阿里云的活动中,价格比较优惠的云服务器有轻量应用服务器与经济型e和通用算力型u1实例的云服务器,尤其是轻量应用服务器2核2G3M带宽61元1年,经济型e实例2核2G3M带宽99元1年,通用算力型u1实例2核4G5M带宽199元1年,是用户关注度最高的几款云服务器。有的新手用户由于是初次使用阿里云服务器,对于轻量应用服务器与经济型e和通用算力型u1实例的相关性能并不是很清楚,本文为大家做个简单的介绍,以供参考。
阿里云轻量应用服务器与经济型e和通用算力型u1实例区别及选择参考
|
搜索推荐 算法 安全
AIGC对未来高校教学的影响
【1月更文挑战第14天】AIGC对未来高校教学的影响
486 3
AIGC对未来高校教学的影响
西门子S7-1200 CPU面板介绍,S7-1200 CPU的扩展能力
本篇我们来介绍西门子S7-1200 CPU的面板,以及S7-1200 CPU的扩展能力。
西门子S7-1200 CPU面板介绍,S7-1200 CPU的扩展能力