- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
드럼치는 프로그래머
[TCP/IP] CreateThread 후에 바로 CloseHandle하는 이유 본문
쓰레드를 만든다음 바로 CloseHandle()로 handle을 닫던가
아님 쓰레드 종료 이벤트 발생시 CloseHandle()을 이용 handle을 닫아야 한다.
아래는 CreateThread()함수를 이용하여 쓰레드 생성 후 바로 CloseHandle()함수를 호출하여
handle을 닫는 것에 대한 답변이다...
쓰레드를 만든다음 바로 CloseHandle()하는 것이 정상입니다.
그렇게 한다고 해서 쓰레드를 쓰지 못하느것도 아니고요. 쓰레드의 경우 생성하면서 참조 번호(?)라는게 생기는데 마치 dll처럼여.
생성하면 참조번호가 하나 증가하고 쓰레드 함수가 호출되면 또 참조번호가 증가합니다.
따라서 쓰레드를 만들게 되면 참조 번호가 2가 됩니다.
그런데 쓰레드 함수가 리턴하게 되면(쓰레드 함수내에서 처리 과정이 모두 끝나서 리턴하는 경우) 참조번호를 하나 감소 시키고, 마찬가지로 CloseHandle()함수에 해당 쓰레드 핸들을 넣어서 호출해도 참조 번호가 하나 감소하게 되죠.
최종적으로 참조번호가 0이 되면 쓰레드는 자동으로 없어지게 됩니다.(마치 dll처럼여.)
그래서 쓰레드를 만들자 마자 CloseHandle(hThread)해서 참조 카운드를 하나 줄여주는 겁니다.
그리고 쓰레드 (커널 객체)는 핸들로 사용하는게 아니고 쓰레드의 아뒤(ID)를 이용해서 참조합니다.쓰레드 핸들을 정확히 얻었다고 해서 그 핸드를 이용해서 쓰레드를 사용할 순없을 겁니다.
마찬가지고 프로세스(커널 객체)도 핸들을 이용해서 사용하는게 아니라 아뒤를 이용해야 할겁니다.
'★─Programing > ☆─TCP IP' 카테고리의 다른 글
[TCP/IP] Echo (에코) 프로그램 Server (리눅스) (1) | 2008.12.13 |
---|---|
[TCP/IP] PF_INET과 AF_INET 비교 (1) | 2008.12.12 |
[TCP/IP] CreateThread() (0) | 2008.05.09 |
[TCP/IP] 임계영역 (Critical Section) (0) | 2008.04.28 |
[TCP/IP] IPv4의 주소체계 (0) | 2008.04.17 |