C++ 对关键部分进行分层是否有效?

C++ 对关键部分进行分层是否有效?,c++,winapi,critical-section,C++,Winapi,Critical Section,例如,这是否有效 CRITICAL_SECTION cs_A; CRITICAL_SECTION cs_b; ::InitializeCriticalSection( &cs_A ); ::InitializeCriticalSection( &cs_B ); ::EnterCriticalSection( &cs_A ); // First level /* do some stuff with A */ ::EnterCriticalSection(

例如,这是否有效

CRITICAL_SECTION cs_A;
CRITICAL_SECTION cs_b;

::InitializeCriticalSection( &cs_A );
::InitializeCriticalSection( &cs_B );

::EnterCriticalSection( &cs_A );      // First level

/* do some stuff with A */

::EnterCriticalSection( &cs_B );        // Second level

/* do some stuff with A and B */

::LeaveCriticalSection( &cs_B );        // Second level

/* do some stuff with A */

::LeaveCriticalSection( &cs_A );      // First level

::DeleteCriticalSection( &cs_A );
::DeleteCriticalSection( &cs_B );
我想用两个关键部分来保护代码的两个部分。 我能做这个吗

可能的重复项:
我认为你的问题与你提到的问题不同,因为你有两个不同的关键部分


无论如何,您可以嵌套它们,但必须始终以相同的顺序输入/获取它们,否则您将面临死锁的风险。

每当您有多个锁并且可能在一个时间点持有多个锁时,您必须确保始终以相同的顺序获取锁。不遵守这一点可能会导致死锁


这是一条广为人知、广受讨论的规则。例如,.

出于好奇:为什么不使用C++11并发库?