CRITICAL_SECTION cs;
InitializeCriticalSection(&m_currenttasklock);//初始化
DeleteCriticalSection(&m_currenttasklock);//删除
EnterCriticalSection(&cs);//加锁
LeaveCriticalSection(&cs);//解锁临界区要用到上面4个函数。我现在有一个类,类里面有一个静态的成员,所以类的所有对象都共用这个静态成员。类的对象分别在不同的线程中使用,所以这个共用的静态成员必须互斥访问。我在类中又添加了一个static CRITICAL_SECTION cs静态成员用于互斥。现在问题来了,我在什么地方初始化InitializeCriticalSection和删除DeleteCriticalSection这个静态成员呢?(不能使用MFC的东西)互斥多线程临界区
InitializeCriticalSection(&m_currenttasklock);//初始化
DeleteCriticalSection(&m_currenttasklock);//删除
EnterCriticalSection(&cs);//加锁
LeaveCriticalSection(&cs);//解锁临界区要用到上面4个函数。我现在有一个类,类里面有一个静态的成员,所以类的所有对象都共用这个静态成员。类的对象分别在不同的线程中使用,所以这个共用的静态成员必须互斥访问。我在类中又添加了一个static CRITICAL_SECTION cs静态成员用于互斥。现在问题来了,我在什么地方初始化InitializeCriticalSection和删除DeleteCriticalSection这个静态成员呢?(不能使用MFC的东西)互斥多线程临界区
解决方案 »
- 如何在水晶报表中合并最后一列,且不随数据循环?
- ADO访问数据库的给一个简单问题
- 怎样用MFC实现LL(1)文法的预测分析法
- 请问如何用纯C语言在局域网内建立服务器和客户端的套接字通信,不要VC封装类的,100请教,谢谢!
- 颜色转换成灰度值的一点小疑问
- 通过API,能否把指定句柄程序的打印菜单条去掉
- 简单问题:请问如何设置主窗口左上角的那个图标?
- 各位COM高手!上头交给我个课题,要求我将一些算法封装以利于第三方能方便的使用,想到了用COM.但是我没接触过希望各位能给我些建议
- 为何我程序在win2000下可以,在win98下却出错?
- WebGIS雏形探讨与实践----疯狂老鼠原作
- 在VC中实现Excel数据的导出导入
- MFC对话框通过wmi获取磁盘信息
if(!s_bInit)
{
InitializeCriticalSection(&m_currenttasklock);
s_bInit=TRUE;
}
我现在的方法是把m_currenttasklock作为全局变量,在程序刚开始启动的时候来初始化一次,至于释放临界区就在程序将要退出的时候调用一次
{public: class CSInitializer {
public:
CRITICAL_SECTION* _pCS;
CSInitializer(CRITICAL_SECTION *pCS) { ::InitializeCriticalSection(_pCS=pCS); }
~CSInitializer() { :: DeleteCriticalSection(_pCS); _pCS=NULL;}
};
static CSInitializer s_initilizer;
static CRITICAL_SECTION s_cs;
};CRITICAL_SECTION CYourClass::s_cs;
CYourClass::CSInitializer CYourClass::s_initilizer = &CYourClass::s_cs;