Función TryEnterCriticalSection (synchapi.h)
Intenta escribir una sección crítica sin bloqueo. Si la llamada se realiza correctamente, el subproceso que realiza la llamada toma posesión de la sección crítica.
Sintaxis
BOOL TryEnterCriticalSection(
[in, out] LPCRITICAL_SECTION lpCriticalSection
);
Parámetros
[in, out] lpCriticalSection
Puntero al objeto de sección crítica.
Valor devuelto
Si la sección crítica se escribe correctamente o el subproceso actual ya posee la sección crítica, el valor devuelto es distinto de cero.
Si otro subproceso ya posee la sección crítica, el valor devuelto es cero.
Comentarios
Los subprocesos de un único proceso pueden usar un objeto de sección crítico para la sincronización de exclusión mutua. El proceso es responsable de asignar la memoria utilizada por un objeto de sección crítico, que puede hacer declarando una variable de tipo CRITICAL_SECTION. Antes de usar una sección crítica, algún subproceso del proceso debe llamar a la función InitializeCriticalSection o InitializeCriticalSectionAndSpinCount para inicializar el objeto.
Para habilitar el uso mutuamente excluyente de un recurso compartido, cada subproceso llama a la función EnterCriticalSection o TryEnterCriticalSection para solicitar la propiedad de la sección crítica antes de ejecutar cualquier sección de código que use el recurso protegido. La diferencia es que TryEnterCriticalSection devuelve inmediatamente, independientemente de si obtuvo la propiedad de la sección crítica, mientras que EnterCriticalSection se bloquea hasta que el subproceso pueda tomar posesión de la sección crítica. Cuando haya terminado de ejecutar el código protegido, el subproceso usa la función LeaveCriticalSection para renunciar a la propiedad, lo que permite que otro subproceso se convierta en el propietario y obtenga acceso al recurso protegido. El subproceso debe llamar a LeaveCriticalSection una vez para cada vez que haya escrito la sección crítica.
Cualquier subproceso del proceso puede usar la función DeleteCriticalSection para liberar los recursos del sistema que se asignaron cuando se inicializó el objeto de sección crítica. Después de llamar a esta función, el objeto de sección crítica ya no se puede usar para la sincronización.
Si un subproceso finaliza mientras tiene la propiedad de una sección crítica, el estado de la sección crítica no está definido.
Para compilar una aplicación que usa esta función, defina _WIN32_WINNT como 0x0400
o posterior. Para obtener más información, vea Usar los encabezados de Windows.
Requisitos
Cliente mínimo compatible | Windows XP [aplicaciones de escritorio | aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | synchapi.h (incluye Windows.h en Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Library | Kernel32.lib |
Archivo DLL | Kernel32.dll |