首先,我测试了它并且效果很好。 我想知道它是否正确。
funcA() {
DWORD res = WaitForSingleObject(mutex, INFINITE);
if (aaa != bbb) throw "aaa";
ReleaseMutex(mutex);
}
WaitForSingleObject始终返回“0”,而不是“WAIT_ABANDONED”或任何其他错误代码。 我找不到任何描述Mutex将在“throw”上发布的文档。
谢谢
答案 0 :(得分:1)
不,互斥锁不会在抛出时释放。
但是,您可以构建自己的Lock
类来锁定构造函数上的互斥锁,并在其析构函数上释放它。然后,如果在函数中使用Lock
对象(使用内存堆栈而不是堆),则可以确保调用该对象的析构函数并释放互斥锁。
这正是CSingleLock类在MFC中的作用。
答案 1 :(得分:1)
除非在析构函数或catch块中隐式调用release,否则不会。你是否展示了描述它所需的全部代码?