시스템 프로그래밍

12-1. Windows에서의 쓰레드 생성과 소멸

CalebHong 2022. 6. 2. 11:36

쓰레드의 생성

- CreateThread 함수를 통해 쓰레드를 생성

  ㄴ 첫 번째 전달 인자: 핸들의 상속여부 결정

  ㄴ 두 번째 전달 인자: 초기 독립 스택의 사이즈

  ㄴ 세 번째 전달 인자: void 포인터를 인자로 받고 DWORD를 리턴하는 함수의 포인터(쓰레드 메인함수)

  ㄴ 네 번째 전달 인자: Windows에게 요구할 전달인자 선언

  ㄴ 다섯 번째 전달 인자: 쓰레드를 생성과 동시에 Blocked 상태로 둘 지에 대한 옵션 여부

  ㄴ 여섯 번째 전달 인자: 고유한 쓰레드의 ID

cf) 핸들은 프로세스가 컨트롤하기 위한 것

 

생성 가능한 쓰레드의 갯수는?

- 허용 가능한 범위 안에서 최대한 생성 가능

- 별도 사용 스택 공간의 최대치 만큼 생성할 수 있음

 

쓰레드의 소멸

case 1) 거의 대부분의 경우

    : 쓰레드 종료 시 return을 이용하는 것이 유용

case 2) 특정 위치에서 쓰레드의 실행을 종료시키고자 하는 경우

    : 쓰레드 종료 시 ExitThread 함수 호출이 유용

case 3) 외부에서 쓰레드 종료시키고자 하는 경우

    : 쓰레드 종료 시 TerminateTread 함수 호출이 유용