¿Puede TCriticalSection.Acquire ser llamado con seguridad más de una vez por un hilo?
En la plataforma Windows, TCriticalSection se implementa llamando a la API de Windows EnterCriticalSection / LeaveCriticalSection. La documentación de Microsoft dice explícitamente que después de que un hilo tenga propiedad de una sección crítica, puede hacer llamadas adicionales a EnterCriticalSection.
Hasta aquí todo bien.
- Falta herramientas de plataforma al instalar Android Studio en Mac OSx
- Android Studio: Buildtools 24.0.1 requiere Java 1.8 o superior.
- Android 4.4.2 anclaje inverso en MacBook Air vía Bluetooth PAN - no se conecta a Internet
- Cómo solucionar el error mksdcard en Android Studio Setup en Mac?
- C El código JNI introduce errores en un proyecto Android Eclipse una vez que se abre el archivo C en el editor
Pero ¿qué pasa con el comportamiento de las otras plataformas que soporta Delphi como OSX, iOS y Android?
Otras plataformas parece hacer uso de TMonitor. Así que la pregunta podría ser reescrito contra TMonitor.
- Cómo configurar Android Studio en El Capitan (OS X 10.11)?
- Error al cargar Genymotion Device en OS X Mavericks
- No se pueden establecer puntos de interrupción en Eclipse
- La depuración del estudio Android deja de funcionar (OSx / Samsung Galaxy S5)
- ADT Plugin desapareció en Eclipse
- Android Studio necesita JDK 7 para Android-L mac
- Construyendo Android 4.0 en Mac OS X Lion
- Versión de Android Studio para Mac OSX 10.7.5
La implementación de TCriticalSection bajo otras plataformas que Windows simplemente usa TMonitor. Así que la respuesta a su pregunta se reduce al comportamiento de TMonitor.Enter. Al menos la documentación indica que TMonitor.Enter es reentrante.
Esta parte de la documentación significaría un "sí" a su respuesta:
Prohíbe el acceso de todos los otros subprocesos pero el llamante al objeto especificado.
La parte de código relevante de TMonitor está en TMonitor.TryEnter:
function TMonitor.TryEnter: Boolean; begin if FOwningThread = GetCurrentThreadId then // check for recursion begin ... Result := True; ...
- Aplicación para Android MAX Almacenamiento de datos (memoria interna) Capacidad Definición y visibilidad del archivo Galería / Aplicaciones de terceros
- Crear un archivo apk utilizando Visual Studio 2015