Hello,

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

Regards
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to