ExitThread 함수(processthreadsapi.h)

호출 스레드를 종료합니다.

구문

void ExitThread(
  [in] DWORD dwExitCode
);

매개 변수

[in] dwExitCode

스레드의 종료 코드입니다.

반환 값

없음

설명

ExitThread 는 C 코드에서 스레드를 종료하는 기본 방법입니다. 그러나 C++ 코드에서는 소멸자를 호출하거나 다른 자동 정리를 수행하기 전에 스레드가 종료됩니다. 따라서 C++ 코드에서는 스레드 함수에서 를 반환해야 합니다.

이 함수를 명시적으로 호출하거나 스레드 프로시저에서 반환하면 현재 스레드의 스택이 할당 취소되고 완료 포트와 연결되지 않은 스레드에서 시작된 보류 중인 모든 I/O가 취소되고 스레드가 종료됩니다. 연결된 모든 DLL(동적 연결 라이브러리)의 진입점 함수는 스레드가 DLL에서 분리되고 있음을 나타내는 값으로 호출됩니다.

이 함수가 호출될 때 스레드가 프로세스의 마지막 스레드인 경우 스레드의 프로세스도 종료됩니다.

스레드 개체의 상태가 신호를 받고 스레드가 종료되기를 기다리던 다른 스레드를 해제합니다. 스레드의 종료 상태 STILL_ACTIVE dwExitCode 매개 변수 값으로 변경됩니다.

스레드를 종료한다고 해서 반드시 운영 체제에서 스레드 개체가 제거되는 것은 아닙니다. 스레드에 대한 마지막 핸들이 닫혀 있으면 스레드 개체가 삭제됩니다.

ExitProcess, ExitThread, CreateThread, CreateRemoteThread 함수 및 시작하는 프로세스(CreateProcess 호출의 결과로)는 프로세스 내에서 서로 직렬화됩니다. 이러한 이벤트 중 하나만 주소 공간에서 한 번에 발생할 수 있습니다. 즉, 다음과 같은 제한 사항이 유지됩니다.

  • 프로세스 시작 및 DLL 초기화 루틴 중에는 새 스레드를 만들 수 있지만 프로세스에 대해 DLL 초기화가 완료될 때까지 실행을 시작하지 않습니다.
  • 프로세스에서 한 번에 하나의 스레드만 DLL 초기화 또는 분리 루틴에 있을 수 있습니다.
  • ExitProcess 는 DLL 초기화 또는 분리 루틴에 스레드가 없을 때까지 반환되지 않습니다.
CRT(정적 C 런타임 라이브러리)에 연결된 실행 파일의 스레드는 CreateThreadExitThread가 아닌 스레드 관리에 _beginthread_endthread 사용해야 합니다. 이렇게 하지 않으면 스레드가 ExitThread를 호출할 때 작은 메모리 누수가 발생합니다. 또 다른 해결 방법은 실행 파일을 정적 CRT 대신 DLL의 CRT에 연결하는 것입니다. 이 메모리 누수는 DLL이 정적 CRT에 연결되고 스레드가 DisableThreadLibraryCalls 함수를 호출하는 경우에만 DLL에서 발생합니다. 그렇지 않으면 정적 CRT에 연결되는 DLL의 스레드에서 CreateThreadExitThread 를 호출하는 것이 안전합니다.

GetExitCodeThread 함수를 사용하여 스레드의 종료 코드를 검색합니다.

Windows Phone 8.1: 이 함수는 Windows Phone 8.1 이상에서 Windows Phone 스토어 앱에서 지원됩니다.

Windows 8.1Windows Server 2012 R2: 이 함수는 Windows 8.1, Windows Server 2012 R2 이상의 Windows 스토어 앱에서 지원됩니다.

예제

예제는 이벤트 개체 사용을 참조하세요.

요구 사항

   
지원되는 최소 클라이언트 Windows XP [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 processthreadsapi.h(Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2의 Windows.h 포함)
라이브러리 Kernel32.lib; Windows Phone 8.1의 WindowsPhoneCore.lib
DLL Kernel32.dll; Windows Phone 8.1의 KernelBase.dll

추가 정보

CreateProcess

CreateRemoteThread

CreateThread

ExitProcess

FreeLibraryAndExitThread

GetExitCodeThread

OpenThread

프로세스 및 스레드 함수

TerminateThread

스레드