Función ExitThread (processthreadsapi.h)

Finaliza el subproceso que llama.

Sintaxis

void ExitThread(
  [in] DWORD dwExitCode
);

Parámetros

[in] dwExitCode

Código de salida del subproceso.

Valor devuelto

Ninguno

Observaciones

ExitThread es el método preferido para salir de un subproceso en el código de C. Sin embargo, en el código de C++, el subproceso se cierra antes de que se pueda llamar a cualquier destructor o se pueda realizar cualquier otra limpieza automática. Por lo tanto, en el código de C++, debe devolver desde la función de subproceso.

Cuando se llama a esta función (ya sea explícitamente o devolviendo desde un procedimiento de subproceso), se desasigna la pila del subproceso actual, se cancelan todas las E/S pendientes iniciadas por el subproceso que no está asociado a un puerto de finalización y el subproceso finaliza. La función de punto de entrada de todas las bibliotecas de vínculos dinámicos (DLL) adjuntas se invoca con un valor que indica que el subproceso se desasocia del archivo DLL.

Si el subproceso es el último subproceso del proceso cuando se llama a esta función, el proceso del subproceso también se termina.

El estado del objeto de subproceso se señala, liberando cualquier otro subproceso que hubiera estado esperando a que finalice el subproceso. El estado de finalización del subproceso cambia de STILL_ACTIVE al valor del parámetro dwExitCode .

La terminación de un subproceso no quita necesariamente el objeto de subproceso del sistema operativo. Cuando se cierra el último identificador del subproceso, se elimina un objeto de subproceso.

Las funciones ExitProcess, ExitThread, CreateThread, CreateRemoteThread y un proceso que se inicia (como resultado de una llamada a CreateProcess ) se serializa entre sí dentro de un proceso. Solo se puede producir uno de estos eventos en un espacio de direcciones a la vez. Esto significa que las restricciones siguientes contienen:

  • Durante las rutinas de inicio del proceso y de inicialización de DLL, se pueden crear nuevos subprocesos, pero no comienzan la ejecución hasta que se realiza la inicialización de DLL para el proceso.
  • Solo un subproceso de un proceso puede estar en una rutina de inicialización o desasociación de DLL a la vez.
  • ExitProcess no devuelve hasta que no hay subprocesos en sus rutinas de inicialización o desasociación de DLL.
Un subproceso de un archivo ejecutable vinculado a la biblioteca en tiempo de ejecución estático de C (CRT) debe usar _beginthread y _endthread para la administración de subprocesos en lugar de CreateThread y ExitThread. Si no lo hace, se producirán pérdidas de memoria pequeñas cuando el subproceso llama a ExitThread. Otra solución alternativa consiste en vincular el ejecutable a CRT en un archivo DLL en lugar del CRT estático. Tenga en cuenta que esta pérdida de memoria solo se produce desde un archivo DLL si el archivo DLL está vinculado al CRT estático y un subproceso llama a la función DisableThreadLibraryCalls . De lo contrario, es seguro llamar a CreateThread y ExitThread desde un subproceso de un archivo DLL que se vincula al CRT estático.

Use la función GetExitCodeThread para recuperar el código de salida de un subproceso.

Windows Phone 8.1: esta función es compatible con las aplicaciones de Windows Phone Store en Windows Phone 8.1 y versiones posteriores.

Windows 8.1 y Windows Server 2012 R2: esta función es compatible con las aplicaciones de la Tienda Windows en Windows 8.1, Windows Server 2012 R2 y versiones posteriores.

Ejemplos

Para obtener un ejemplo, vea Usar objetos de evento.

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 processthreadsapi.h (incluye Windows.h en Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Library Kernel32.lib; WindowsPhoneCore.lib en Windows Phone 8.1
Archivo DLL Kernel32.dll; KernelBase.dll en Windows Phone 8.1

Consulte también

CreateProcess

CreateRemoteThread

CreateThread

ExitProcess

FreeLibraryAndExitThread

GetExitCodeThread

OpenThread

Funciones de proceso y subproceso

TerminateThread

Subprocesos