Я просматривал устаревший код и нашел следующий фрагмент:
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, то это может сработать. Но что, если порядок отменен?
Это проблема дизайна?