Compartilhar via


Função ExitThread (processthreadsapi.h)

Encerra o thread de chamada.

Sintaxe

void ExitThread(
  [in] DWORD dwExitCode
);

Parâmetros

[in] dwExitCode

O código de saída do thread.

Valor retornado

Nenhum

Comentários

ExitThread é o método preferencial de sair de um thread no código C. No entanto, no código C++, o thread é encerrado antes que qualquer destruidor possa ser chamado ou qualquer outra limpeza automática possa ser executada. Portanto, no código C++, você deve retornar da função de thread.

Quando essa função é chamada (explicitamente ou retornando de um procedimento de thread), a pilha do thread atual é desalocada, todas as E/S pendentes iniciadas pelo thread que não está associado a uma porta de conclusão são canceladas e o thread é encerrado. A função de ponto de entrada de todas as DLLs (bibliotecas de vínculo dinâmico) anexadas é invocada com um valor que indica que o thread está desanexando da DLL.

Se o thread for o último thread no processo quando essa função for chamada, o processo do thread também será encerrado.

O estado do objeto thread torna-se sinalizado, liberando quaisquer outros threads que estavam aguardando o término do thread. A terminação do thread status muda de STILL_ACTIVE para o valor do parâmetro dwExitCode.

Encerrar um thread não remove necessariamente o objeto thread do sistema operacional. Um objeto thread é excluído quando o último identificador para o thread é fechado.

As funções ExitProcess, ExitThread, CreateThread, CreateRemoteThread e um processo que está sendo iniciado (como resultado de uma chamada CreateProcess ) são serializados entre si em um processo. Somente um desses eventos pode acontecer em um espaço de endereço por vez. Isso significa que as seguintes restrições são retenção:

  • Durante as rotinas de inicialização de processo e inicialização de DLL, novos threads podem ser criados, mas eles não iniciam a execução até que a inicialização da DLL seja feita para o processo.
  • Somente um thread em um processo pode estar em uma rotina de inicialização ou desanexação de DLL por vez.
  • ExitProcess não retorna até que nenhum thread esteja em suas rotinas de inicialização ou desanexação de DLL.
Um thread em um executável vinculado à CRT (biblioteca de tempo de execução C) estático deve usar _beginthread e _endthread para gerenciamento de threads em vez de CreateThread e ExitThread. A falha ao fazer isso resulta em pequenas perdas de memória quando o thread chama ExitThread. Outra solução alternativa é vincular o executável ao CRT em uma DLL em vez do CRT estático. Observe que essa perda de memória só ocorrerá de uma DLL se a DLL estiver vinculada ao CRT estático e um thread chamar a função DisableThreadLibraryCalls . Caso contrário, é seguro chamar CreateThread e ExitThread de um thread em uma DLL vinculada ao CRT estático.

Use a função GetExitCodeThread para recuperar o código de saída de um thread.

Windows Phone 8.1: essa função tem suporte para aplicativos Windows Phone Store no Windows Phone 8.1 e posterior.

Windows 8.1 e Windows Server 2012 R2: essa função tem suporte para aplicativos da Windows Store em Windows 8.1, Windows Server 2012 R2 e posterior.

Exemplos

Para obter um exemplo, consulte Usando objetos de evento.

Requisitos

   
Cliente mínimo com suporte Windows XP [aplicativos da área de trabalho | aplicativos UWP]
Servidor mínimo com suporte Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho processthreadsapi.h (inclua Windows.h no Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Biblioteca Kernel32.lib; WindowsPhoneCore.lib no Windows Phone 8.1
DLL Kernel32.dll; KernelBase.dll no Windows Phone 8.1

Confira também

CreateProcess

CreateRemoteThread

CreateThread

ExitProcess

FreeLibraryAndExitThread

GetExitCodeThread

OpenThread

Funções de thread e processo

TerminateThread

Threads