私はレガシーコードを調べていて、次のスニペットを見つけました:
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 の場合は、機能する可能性があります。しかし、順序が逆になるとどうなるでしょうか?
それは設計上の問題ですか?