CRITICAL_SECTION http://blog.csdn.net/leowangzi/article/details/6572650
来源:互联网 发布:手机淘宝店如何招代理 编辑:程序博客网 时间:2024/06/01 07:26
多线程中用来确保同一时刻只有一个线程操作被保护的数据InitializeCriticalSection(&cs);//初始化临界区 EnterCriticalSection(&cs);//进入临界区//操作数据MyMoney*=10;//所有访问MyMoney变量的程序都需要这样写Enter.. Leave...LeaveCriticalSection(&cs);//离开临界区DeleteCriticalSection(&cs);//删除临界区Critical Section: 不论是硬件临界资源,还是软件临界资源,多个线程必须互斥地对它进行访问。每个线程中访问临界资源的那段代码称为临界区(Critical Section)。 每个线程中访问临界资源的那段程序称为临界区(Critical Section)(临界资源是一次仅允许一个线程使用的共享资源)。每次只准许一个线程进入临界区,进入后不允许其他线程进入。不论是硬件临界资源,还是软件临界资源,多个线程必须互斥地对它进行访问。 多个线程中涉及到同一个临界资源的临界区称为相关临界区。 线程进入临界区的调度原则是: ①如果有若干线程要求进入空闲的临界区,一次仅允许一个线程进入。②任何时候,处于临界区内的线程不可多于一个。如已有线程进入自己的临界区,则其它所有试图进入临界区的线程必须等待。③进入临界区的线程要在有限时间内退出,以便其它线程能及时进入自己的临界区。④如果线程不能进入自己的临界区,则应让出CPU,避免线程出现“忙等”现象。 如果有多个线程试图同时访问临界区,那么在有一个线程进入后其他所有试图访问此临界区的线程将被挂起,并一直持续到进入临界区的线程离开。临界区在被释放后,其他线程可以继续抢占,并以此达到用原子方式操作共享资源的目的。 临界区在使用时以CRITICAL_SECTION结构对象保护共享资源,并分别用EnterCriticalSection()和LeaveCriticalSection()函数去标识和释放一个临界区。所用到的CRITICAL_SECTION结构对象必须经过InitializeCriticalSection()的初始化后才能使用,而且必须确保所有线程中的任何试图访问此共享资源的代码都处在此临界区的保护之下。否则临界区将不会起到应有的作用,共享资源依然有被破坏的可能。
0 0
- CRITICAL_SECTION http://blog.csdn.net/leowangzi/article/details/6572650
- http://blog.csdn.net/IBM_hoojo/article/details/5688947
- http://blog.csdn.net/chenlaic/article/details/6143235
- http://blog.csdn.net/eaglewood2005/article/details/4335052
- http://blog.csdn.net/mchp/article/details/3995970
- http://blog.csdn.net/v_july_v/article/details/6015165
- http://blog.csdn.net/masterz/article/details/6232585
- http://blog.csdn.net/perfectpdl/article/details/6442847
- http://blog.csdn.net/eroswang/article/details/1967243
- http://blog.csdn.net/zhvsby/article/details/5986645
- http://blog.csdn.net/dz45693/article/details/6183645
- http://blog.csdn.net/david_lv/article/details/5798003
- http://blog.csdn.net/zxingchao2009/article/details/6299313
- http://blog.csdn.net/zhanxinhang/article/details/6783766
- http://blog.csdn.net/ruanruoshi/article/details/935510
- http://blog.csdn.net/yming0221/article/details/6538527
- http://blog.csdn.net/yming0221/article/details/6528490
- http://blog.csdn.net/yming0221/article/details/6704079
- 图的一些概念和应用
- 欢迎使用CSDN-markdown编辑器
- NGUI类之间的关系和架构
- 对加密数据的高效的相似性搜索(一)
- CentOS-7下安装apache
- CRITICAL_SECTION http://blog.csdn.net/leowangzi/article/details/6572650
- hdu 1257
- Nginx的信号控制
- C++内存对齐笔记
- android典型代码系列(二十一)------根据文件后缀名获得对应的MIME类型
- LibGDX_1.3: Desktop 环境搭建:创建 Eclipse User Library,一劳永逸
- 剑指offer系列之八:跳台阶问题
- MyBatis入门学习教程
- 线性表