[fpc-pascal] Critical Section and Recursive Calls

African Wild Dog paintedlycaon at gmail.com
Thu Mar 30 08:36:02 CEST 2017


I'm writing a function protected by a critical section which can have
recursive calls under certain conditions.

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?

If so, is this behaviour the same on all platforms?

>From the Windows API:

*"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."*

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20170330/840851ae/attachment.html>

More information about the fpc-pascal mailing list