博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CRITICAL_SECTION 学习
阅读量:6213 次
发布时间:2019-06-21

本文共 1074 字,大约阅读时间需要 3 分钟。

// 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;
}

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

加锁后:

出处:
作者:

转载地址:http://qrdja.baihongyu.com/

你可能感兴趣的文章
安装ISA2006标准版及配置发布EX2007 OWA笔记
查看>>
Active Directory的脱机碎片整理,Active Directory系列之七
查看>>
"误GHOST、误一键恢复"灾难应急方案
查看>>
IS-IS的配置实例
查看>>
运维跟开发一定有仇么?
查看>>
xcode symbol(s) not found for architecture i386错误解决方法
查看>>
从趣味游戏到排序算法(3)
查看>>
一个字符串小题目
查看>>
SharePoint Server中的用户信息管理
查看>>
SCOM 2012系列②安装部署SCOM
查看>>
WebAPi的可视化输出模式(RabbitMQ、消息补偿相关)所有webapi似乎都缺失的一个功能...
查看>>
ASP.NET MVC4+BootStrap 实战(四)
查看>>
构建基于Hibernate的servlet(1)
查看>>
[IE技巧] IE的 "已终止操作" (Operation Aborted) 之谜
查看>>
综合应用WPF/WCF/WF/LINQ之四:创建一个StateMachineWorkflow
查看>>
负载均衡连载之五
查看>>
iOS应用开发之CoreData[转]
查看>>
分享文件一个上传工具类
查看>>
覆盖索引或列包含
查看>>
总结了一些常见的排序算法,面试必备啊!
查看>>