Is it valid to nest a critical section?

前端 未结 3 1323
时光取名叫无心
时光取名叫无心 2020-12-16 13:19

For example, would this be valid?

CRITICAL_SECTION cs;

::InitializeCriticalSection( &cs );

::EnterCriticalSection( &cs );      // First level
::Ent         


        
3条回答
  •  别那么骄傲
    2020-12-16 13:34

    To validate the other two posts. Quick look at Critical section in WinDbg shows that cricital section maintains an integer variable to hold Recursion counts.

    0:001> dt RTL_CRITICAL_SECTION
    +0x000 DebugInfo : Ptr32 _RTL_CRITICAL_SECTION_DEBUG
    +0x004 LockCount : Int4B
    +0x008 RecursionCount : Int4B
    +0x00c OwningThread : Ptr32 Void
    +0x010 LockSemaphore : Ptr32 Void
    +0x014 SpinCount : Uint4B 
    

    RecursionCount - It is possible for a thread to acquire a critical section more than once. This field indicates how many times the same thread has acquired the critical section. By default, the value of this field is 0, indicating that there is no thread owning the critical section.

提交回复
热议问题