Например, будет ли это действительным?
CRITICAL_SECTION cs;
::InitializeCriticalSection( &cs );
::EnterCriticalSection( &cs ); // First level
::EnterCriticalSection( &cs ); // Second level
/* do some stuff */
::LeaveCriticalSection( &cs ); // Second level
::LeaveCriticalSection( &cs ); // First level
::DeleteCriticalSection( &cs );
Очевидно, я бы никогда не сделал это намеренно, но что, если это произойдет в результате вызовов функций, так что будет вызван «первый уровень» для блокировки объекта для сложного (например, поиска) алгоритма и « второй уровень "вызывается в функциях доступа этого объекта?