Page 18 -
P. 18
니다. ➍ 이후로는 할 일이 없으므로 메인 스레드는 종료합니다.
결국 실행된 프로세스 안의 모든 스레드가 종료되었으므로 프로세스 자체가 종료합니다.
메인 스레드가 먼저 종료되면 어떻게 될까요? 메인 스레드가 이미 종료되었지만, 다른 스레드가
아직 뭔가를 하고 있습니다. 따라서 프로세스는 종료하지 않고 계속 남아 있습니다. 멀티스레드
프로그램을 개발할 때 주의할 점은 바로 이것입니다. 메인 스레드가 종료되었지만 다른 스레드를
그냥 남겨 둔다면, 프로그램이 종료되지 않는 한 이상한 현상을 겪게 될 것입니다. 이를 좀비 프로
세스라고도 합니다.
스레드를 생성하는 함수는 운영체제마다 다르고 프로그래밍 언어마다 다릅니다. 여기서는 자주
사용하는 것 위주로 소개하겠습니다.
C 언어에서는 스레드를 생성하는 함수가 운영체제마다 달랐습니다. 예를 들어 윈도 앱을 개발할
때는 다음과 같이 작성합니다.
코드 윈도일 때
DWORD threadID;
ThreadParam threadParam;
threadParam.value = 123;
CreateThread(
...,
ThreadProc, &threadParam,
...,
&threadID);
반면 리눅스나 유닉스에서는 다음과 같이 작성합니다.
코드 리눅스나 유닉스 계열일 때
pthread_t threadID;
CreateThread(&threadID,
...,
ThreadProc, &threadParam);
*
하지만 모던 C++ 에서는 다음과 같이 통일했습니다.
* 모던(Modern) C++는 C++11 이후를 의미합니다. 현재 윈도뿐만 아니라 리눅스, iOS의 C++ 개발 환경에서는 이미 대부분 지원하고 있습
니다.
026