我正在浏览遗留代码并找到以下代码段:
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那么它可能会起作用.但如果订单被撤销怎么办?
这是一个设计问题吗?
在使用对象时不应调用析构函数.如果你正在处理这种情况,它需要一个基本的解决方案.然而,析构函数可能想要改变一些其他东西(与被破坏的类无关),并且它可能需要一个关键部分(例如,递减全局计数器).