<div dir="ltr"><div><div>Hello,<br><br></div><div><span class="gmail-" id="gmail-result_box" lang="en"><span class="gmail-">I'm writing a function protected by a critical section which can have recursive calls under certain conditions.</span></span></div><div><br></div>Using the TCriticalSection class, after my thread acquires a critical section, if my thread make 6 additional calls to TCriticalSection.Enter, to release the critical section my thread will have to make 6 additional calls to TCriticalSection.Leave?<br><br></div>If so, is this behaviour the same on all platforms?<br><div><br><div><div><div>From the Windows API: <br><i><br>"After a thread has ownership of a critical section, it can make additional calls to 
EnterCriticalSection or TryEnterCriticalSection
 without blocking its execution. This prevents a thread from deadlocking
 itself while waiting for a critical section that it already owns. The 
thread enters the critical section each time 
EnterCriticalSection and 
TryEnterCriticalSection succeed. A thread must call LeaveCriticalSection once for each time that it entered the critical section."</i><br><br>Regards<br></div></div></div></div></div>