我正在查看遗留代码并发现以下片段:
MyClass::~MyClass()
{
EnterCriticalSection(&cs);
//Access Data Members, **NO Global** members are being accessed here
LeaveCriticalSection(&cs);
}
我想知道它是否有助于保护析构函数?
考虑一个场景:
1. Thread1 - About to execute any of the member function which uses critical section
2. Thread2- About to execute destructor.
如果执行顺序是 1=>2 那么它可能会工作。但如果顺序颠倒了怎么办?
是设计问题吗?
析构函数应该当对象正在使用时不会被调用。如果你正面临这样的情况,它需要一个根本性的修复。然而,析构函数可能想要改变一些其他的东西(这与被破坏的类无关),并且它可能需要一个关键部分(例如,递减一个global柜台)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)