我有一个函数foo()
,它获取critical section
进行一些处理并释放critical section
。现在有多个控制流,所以为了避免记住释放锁我想到将它包装在一个类中,以便析构函数自动释放锁。
class Lock
{
public:
LPCRITICAL_SECTION m_a;
Lock(CRITICAL_SECTION *a):m_a(a){EnterCriticalSection(a);}
~Lock(){LeaveCriticalSection(m_a);}
};
现在的问题是我有控制流,我想获取锁,做一些事情,然后释放它,然后继续其他处理。所以我不想等待释放锁,直到功能结束时破坏会开始。有办法实现这一目标。
答案 0 :(得分:5)
使用本地区块:
void myFunction() {
// do stuff
{
Lock l(&critsec);
// do stuff needing lock
}
// do more stuff
}