たとえば、これは有効ですか?
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 );
明らかに、私は意図的にこれを行うことはありませんが、複雑な(検索などの)アルゴリズムのオブジェクトをロックするために「第1レベル」が呼び出され、「第2レベル」が呼び出されるような関数呼び出しの結果としてこれが発生した場合はどうなりますか?そのオブジェクトのアクセサ関数で呼び出されますか?