[완료]쓰레드 에서 exit 를 호출한 경우 메모리 문제
글쓴이: kgykingdom / 작성시간: 월, 2007/08/06 - 4:54오후
안녕하십니까? KLDP 에서 여러모로 도움만 받고 있네요. ㅋ
메인 쓰레드에서 1~10 까지 쓰레드를 생성했다고 보고, 만약 3번 쓰레드가 어떠한 시그널을 받아 프로그램을 종료해야 하는 상황에 직면한다면
자신의 메모리를 해제하고, exit()를 호출하면 모든 쓰레드가 죽는걸로 알고 있는데.. 아닐지도.. ^^;;
이럴 경우 다른 쓰레드들이 사용 중이던 메모리는 어떻게 되는 건가요?? 해제 하지 않고 끝내도 문제가 발생하지 않나요?
아니면 exit 를 사용하지 않고, 종료할 수 있는 방안을 알려주시면 감사하겠습니다. ^^ (각 쓰레드에게 종료하라는 메시지를 보낸다던지..)
Forums:
전혀 아무런 문제 없습니다.
프로세스가 사용중인 메모리는 어차피 프로그램이 죽으면 모두 OS로 반환됩니다. 따라서 전혀 걱정하실 필요 없습니다.
오히려 곧 죽으면 반환될 메모리를 free하고 죽겠다고 열심히 따라다니면서 free하는 게 CPU 낭비입니다. "malloc한 것은 모두 free한다"라는 일관성도 좋기는 하지만, 경우에 따라선 오히려 과감히 불필요한 과정을 생략하는 게 더 깔끔한 코드가 될 수 있습니다.
작은 프로그램에서는
작은 프로그램에서는 사용해도 괜찮습니다.
프로그램이 클 경우나 데몬일 경우는 free를 도중에 해줘야겠죠.
또 종료시 처리해야될 내용들이 있기 마련이기 때문에
추후를 위해서 os에 맡기는 것보다는, 자신만의 쉽고 직관적인 free방법을 익히는게 더 좋을 듯합니다.
댓글 달기