VC++ 线程同步 CRITICAL_SECTION
来源:互联网 发布:mysql远程客户端中文版 编辑:程序博客网 时间:2024/06/09 21:12
声明:本人一个菜鸟,网上搜罗了很多关于VC++编程的资料,可每本资料都是涵盖面太广,难以细致。英语又太烂,所以不得意只得摸索,恐又忘记所以记在此处,若有不对的地方,烦劳指出,不胜感激。
author:fym0121@163.com
license:GPL
IDE:Visual Studio 2008
临界区,主要函数
CRITICAL_SECTION g_csLock; //定义InitializeCriticalSection(&g_csLock); // 初始化EnterCriticalSection(&g_csLock); //进入LeaveCriticalSection(&g_csLock); //离开 DeleteCriticalSection(&g_csLock); //销毁
实例
#include "stdafx.h"#include <Windows.h>#include <process.h> //_beginthreadex#include <iostream>int g_candy = 0;CRITICAL_SECTION g_csLock;unsigned int _stdcall thread_bob(void *); //_beginthreadex P3int _tmain(int argc, _TCHAR* argv[]){ // this is Alice InitializeCriticalSection(&g_csLock); unsigned threadID; //创建线程 _beginthreadex(NULL,0,thread_bob,NULL,0,&threadID); while(1) { EnterCriticalSection(&g_csLock); // 进入临界区 /* 注意,加上下面这句话,不会对Alice线程产生影响,但是Bob线程走不动了 */ //EnterCriticalSection(&g_csLock); std::cerr <<"Alice: "<<g_candy++ <<std::endl; Sleep(3000); /* 如果上面两个 EnterCriticalSection,下面两个LeaveCriticalSection,则两个线程都可以跑起来*/ LeaveCriticalSection(&g_csLock); //离开临街区 //LeaveCriticalSection(&g_csLock); }return 0;}unsigned int _stdcall thread_bob(void*){ // this is Bob while (1) { EnterCriticalSection(&g_csLock); std::cerr <<"Bob: " << g_candy++ <<std::endl; LeaveCriticalSection(&g_csLock); Sleep(1000); }}
貌似,在一个线程内,同一个临界区可以重复进入,而不会对这个线程产生什么影响,但另一个线程就惨了,它根本得不到锁。Alice线程进两次临界区,出一次,对Bob来说相当于Alice还在临界区里。
- VC++ 线程同步 CRITICAL_SECTION
- 线程同步之 CRITICAL_SECTION
- 线程同步--关键段CRITICAL_SECTION
- 线程同步:CRITICAL_SECTION, Mutex , Event
- 线程同步方法一: CRITICAL_SECTION (临界区)
- 线程同步问题,CRITICAL_SECTION和Mutex哪个更快
- 线程同步 关键代码段 CRITICAL_SECTION 用户模式同步对象 InitializeCriticalSection
- VC线程同步方法
- vc++ 线程同步技术
- VC线程同步方法
- VC++线程的同步
- vc线程同步
- VC++线程同步
- VC++线程的同步
- VC 线程同步实例
- Windows用户模式下的线程同步之CRITICAL_SECTION(关键字)
- 秒杀多线程第五篇 经典线程同步 关键段CRITICAL_SECTION
- 进程内多线程同步CRITICAL_SECTION
- Java JRadioButton ButtonGroup
- Selenium 中 getEval 和runScript 的区别
- 通过GetCurrentObject和GetObject获取和hdc相关的位图对象数据区起始地址
- yum命令的用法
- 新版本ffmpeg在Visual Studio中的使用。
- VC++ 线程同步 CRITICAL_SECTION
- FRM-40212:Invalid Value For Field Ordered_Item_Dsp
- android中Paint类参数介绍
- ubuntu下面安装samba服务器,windows直接可读可写
- 约瑟夫问题的链表解法
- 一个简单的打电话程序
- 杭电2016 数据的交换输出
- 芯片无忧 V1.5(ChipEasy)U盘固态硬盘检测工具 量产必备
- java 浮点数精度问题