1. CreateThread 함수와 _beginthreadex 함수의 차이점

- _beginthreadex 함수를 기반으로 쓰레드를 생성할 경우 쓰레드 별로 독립적인 메모리 공간을 할당 받는다. 그리고 이 메모리 공간은 ANSI 표준 함수를 호출하는 과정에서 사용한다. 이는 둘 이상의 쓰레드가 하나의 메모리 공간에 동시접근하는 문제점을 막기 위함이다.


2. 둘 이상의 쓰레드가 동시접근하는 메모리 공간의 문제점 (p388~ 참고)

- 실제로는 둘 이상의 쓰레드가 동시에 실행되지 않으므로, 메모리에 동시접근이라는 문제점은 발생하지 않는다고 생각할 수 있다. 

- 하지만 실행 중인 쓰레드의 변경은 프로그램 라인 단위가 아닌 함수가 호출되어 실행 중인 중간에도 컨택스트 스위칭이 일어 난다.


3. 쓰레드의 상태 변화

- Windows는 실행의 주체가 프로세스가 아닌 쓰레드이다. 따라서 상태를 지니는 실직적인 대상도 프로세스가 아닌 쓰레드이다. 쓰레드가 Ready, Blocked, Running 상태를 지니게 되며, 이들 상태간의 이동이 발생하는 시기는 프로세스의 상태 이동이 발생하는 이유와 동일하다.


4. 프로세스로부터의 쓰레드 분리

- 프로세스로부터 쓰레드를 분리한다는 것은 프로세스가 소유하는 쓰레드의 핸들을 반환함으로써 쓰레드의 Usage Count를 1로 두겠다는 뜻이다. 이는 쓰레드가 종료되는 시점에 쓰레드의 리소스를 반환하기 위함이다.

+ Recent posts