목록TIL (2)
AlphaMOT
[스레드의 종료]애플리케이션 레벨에서 스레드를 종료시키는 방법은 크게 3가지이다.1. 스레드 시작 프로시저(스레드 수행 함수)에서의 return 반환2. ExitThread 함수 호출3. TerminateThread 함수 호출 정상적인 경우 스레드 시작 프로시저에서 리턴함으로써 종료하게 된다(본인 수행 프로젝트에서는 무조건 이 방식으로 스레드를 종료하도록 유도하였다). return을 통한 스레드 종료가 바람직한 이유는 C 런타임 라이브러리와의 관계와 관련이 있다. 스레드가 종료하더라도 커널 스레드 객체는 이 객체에 대해 열린 모든 핸들이 닫히기 전에는 없어지지 않는다. 스레드 종료가 스레드 객체의 소멸로 즉시 이루어지지 않는다는 것이다. 스레드가 종료되면, 먼저 종료된 스레드 커널 객체의 상태가 '시그널..
[스레드 라이프 사이클 (win32 multi-thread programming)]다른 스레드가 CreateThread 함수를 호출 -> '스레드 커널 오브젝트' 생성. 프로세스의 주 스레드의 경우 프로세스 생성 스레드에서 'CreateProcess' 함수 호출을 통해 주 스레드가 생성스레드 커널 오브젝트 초기화 (by OS): (1) 스레드가 사용할 스택 할당 작업, (2) 스레드의 수행 상태를 저장할 문맥(context) 구조 생성(레지스터 복사본 저장용)스레드가 자신이 수행할 시작 프로시저의 수행을 시작: (1) 주 스레드의 경우 시작 프로시저는 'CRTStartUp' 함수이며, 이 함수 내에서 main 또는 WinMain 함수가 호출됨. (2) 주 스레드가 아닌 경우, 스레드 생성 시 전달되는 작..