¿Puede TCriticalSection.Acquire llamar de forma segura más de una vez por un hilo?

En la plataforma Windows, TCriticalSection se implementa llamando a la API de Windows EnterCriticalSection / LeaveCriticalSection. La documentation de Microsoft explícitamente dice que después de que un subprocess tenga la propiedad de una sección crítica, puede hacer llamadas adicionales a EnterCriticalSection.

Hasta aquí todo bien.

Pero, ¿qué pasa con el comportamiento de otras plataforms compatibles con Delphi como OSX, iOS y Android?

Otras plataforms parecen hacer uso de TMonitor. Entonces, la pregunta podría ser reescrita contra TMonitor.

La implementación de TCriticalSection en otras plataforms que Windows simplemente usa TMonitor. Entonces la respuesta a su pregunta se networkinguce al comportamiento de TMonitor.Enter. Al less, la documentation establece que TMonitor.Enter es reentrante.

Esta parte de la documentation significaría un "sí" a su respuesta:

Prohíbe el acceso de todos los demás subprocesss pero el que llama al object especificado.

La parte del código relevante de TMonitor está en TMonitor.TryEnter:

function TMonitor.TryEnter: Boolean; begin if FOwningThread = GetCurrentThreadId then // check for recursion begin ... Result := True; ...