临界区使用方法实例
来源:互联网 发布:机械编程学习 编辑:程序博客网 时间:2024/05/22 14:02
转载自新浪博客
以下为临界区的使用方法:
*.h头文件:
#include <winbase.h>
CRITICAL_SECTION
*.cpp源文件使用方法:
在类的构造函数内初始化临界区对象
//该函数必须在任何线程调用EnterCriticalSection函数之前被调用,否则结果将是很难预计的
::InitializeCriticalSectio
在类的虚构函数内释放临界区对象
::DeleteCriticalSection(&m_cs_test);
使用方法一:
在所需要使用的函数中开始锁定:
CCriticalSectionLock lock(m_cs_test);
在函数生命期结束后会自动解锁。
使用方法二:
//进入开始锁定数据:保护共享资源只被一个线程调用
EnterCriticalSection(&m_cs_test);
...//do something you want to
//离开锁定的数据:允许共享资源被其他的线程调用
LeaveCriticalSection(&m_cs_test);
可以使用下面这个函数来代替EnterCriticalSection:
BOOL TryEnterCriticalSection(PCRITICAL_SECTION pcs);
TryEnterCriticalSection函数决不允许调用线程进入等待状态。相反,它的返回值能够指明调用线程是否能够获得对资源的访问权。因此,如果TryEnterCriticalSection发现该资源已经被另一个线程访问,它就返回FALSE。在其他所有情况下,它均返回TRUE。
运用这个函数,线程能够迅速查看它是否可以访问某个共享资源,如果不能访问,那么它可以继续执行某些其他操作,而不必进行等待。如果TryEnterCriticalSection函数确实返回了TRUE,那么CRITICAL_SECTION的成员变量已经更新,以便反映出该线程正在访问该资源。因此,对返回TRUE的TryEnterCriticalSection函数的每次调用都必须与对LeaveCriticalSection函数的调用相匹配。
Windows 98没有可以使用的TryEnterCriticalSection函数的实现代码。调用该函数总是返回FALSE。
PS:可以定义不同的临界区对象(CRITICAL_SECTION)来锁定不同的共享资源,使用方法就是传递不同的参数对象,如m_cs_test。
- 临界区使用方法实例
- CCriticalSection临界区的使用方法
- VC/MFC 临界区使用方法事例
- [C++][Win32]临界区编程实例
- C++多线程实例之临界区同步
- 临界资源 & 临界区
- 临界段临界区
- 临界区
- 临界区
- 临界区
- 临界区
- 临界区
- 临界区
- 临界区
- 临界区
- 临界区
- 临界区
- 临界区
- Reactor模式和NIO(转载)
- Create Advanced Web Applications With Object-Oriented Technique
- 鬼影3启动的技术细节
- Discuz中读取精华贴
- 处理WM_PAINT和WM_DRAWITEM
- 临界区使用方法实例
- 基于MBR 的bootkit的进展 鬼影-TDL4-BMW
- dom4j操作xml
- 同学录--利用二叉树存储结构实现建立、查找、新增、修改、删除等功能
- 在Windows中使用Cygwin安装HBase
- C++内存使用机制基本概念详解
- opengl 关于glewGetContext没有定义
- 事物AOP
- MFC----JOYSTICK相关API函数对手柄进行控制