일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 영화
- range
- bitcoin
- c++
- Callback
- channel
- tcp
- Python
- File
- package
- API
- 책
- C
- JavaScript
- GO 언어
- Close
- install
- mutex
- http
- Linux
- go언어
- 리뷰
- FOR
- window
- Sync
- Golang
- json
- go
- write
- windows
- Today
- Total
목록종료 (2)
Code Habit
윈도우 프로그램 종료시 사용되는 함수에 따른 차이점을 정리해 보겠다. TerminateProcess 자기 자신이 아닌 다른 프로세스를 종료시킬 수 있음. 정리 작업을 하지 않기 때문에 되도록 사용하지 않는 것이 좋음. 메모리릭 발생 위험 있음. PostQuitMessage 단지 메시지 맵에 WM_QUIT 메시지만 전달하는 것이기 때문에 이 명령의 다음 코드도 실행이 됨. 메모리릭 발생 위험 있음. ExitProcess 프로세스와 연결된 모든 DLL을 종료시키기 위해 각 DLL의 DllMain함수가 호출되며 DLL들은 스스로 정리작업을 시도함. 모든 열려진 핸들을 닫음.(핸들 테이블 제거) 프로세스 커널 객체와 쓰레드 객체의 상태가 신호상태로 되며 이 신호를 기다리는 다른 프로세스 대기 상태를 해제할 수 ..
설 명 쓰레드의 가장 안전한 종료 방법은 쓰레드 함수가 모든일을 처리하고 return 하는 것이다. flag를 이용하여 쓰레드 함수를 안정적으로 종료 시킨다. Waitforsingleobject 함수를 이용하여 쓰레드가 안정적으로 종료될때까지 기다린다. 이때 Waitforsingleobject 함수 사용 시 프로그램이 행에 걸릴 수 있으므로 적당한 제한 시간을 두고 쓰레드 함수가 미종료시 TerminateThread함수로 강제 종료할 수 있다. ( 권장x ) 예 제 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 31 32 33 34 #include // bool g_threadSwitch = true; //..