在函数的整个生命周期内都有一个对象在堆栈上
Have an object on stack not for the entire lifetime of the function
我有一个函数foo()
获取critical section
做一些处理并释放critical section
。现在有多个控制流所以为了避免记住释放锁我想把它包装在 class 中,这样析构函数就会自动释放锁。
class Lock
{
public:
LPCRITICAL_SECTION m_a;
Lock(CRITICAL_SECTION *a):m_a(a){EnterCriticalSection(a);}
~Lock(){LeaveCriticalSection(m_a);}
};
现在的问题是我有控制流,我想获取锁,做一些事情然后释放它,然后继续其他processing.So我不想等到释放锁当销毁将启动时函数结束 in.Is 有一种方法可以实现这一点。
使用本地块:
void myFunction() {
// do stuff
{
Lock l(&critsec);
// do stuff needing lock
}
// do more stuff
}
我有一个函数foo()
获取critical section
做一些处理并释放critical section
。现在有多个控制流所以为了避免记住释放锁我想把它包装在 class 中,这样析构函数就会自动释放锁。
class Lock
{
public:
LPCRITICAL_SECTION m_a;
Lock(CRITICAL_SECTION *a):m_a(a){EnterCriticalSection(a);}
~Lock(){LeaveCriticalSection(m_a);}
};
现在的问题是我有控制流,我想获取锁,做一些事情然后释放它,然后继续其他processing.So我不想等到释放锁当销毁将启动时函数结束 in.Is 有一种方法可以实现这一点。
使用本地块:
void myFunction() {
// do stuff
{
Lock l(&critsec);
// do stuff needing lock
}
// do more stuff
}