pthread 종료시 자원 해제에 관한 질문입니다.
HP O/S 에서 pthread 프로그램을 짜는데요,
Main_thread가 시작하자 마자, Thread_1, Thread_2 를 phread_create(PTHREAD_CREATE_JOINABLE)하고 Main_thread는 socketID를 select() 걸고 있습니다.
Thread_1은 Queue1번을 msgrcv() [block모드]하고 있고,
Thread_2은 Queue2번을 msgrcv() [block모드]하고 있습니다.
이런 구조에서 Main_thread에서 정상적으로 종료하라는 command를 받으면, Thread 1번과 2번을 죽이고, 자기도 exit 할려고 했는데,
Main_thread에서 pthread_join()을 호출하면 각 thread가 죽을때까지 기다리고 있더라구요.
그래서 질문 2가지가 있습니다.
1. Main_thread가 pthread_join()없이 exit()하면, 각 thread에 할당된 자원이 시스템에 자동복원이 되는지 궁금합니다. 만약 안한다면 시스템에 얼마나 영향을 미치는지(심각한지?)를 알고 싶습니다.
2. 꼭 해제를 해야 한다면 어떤 방법이 있을까요? 단, pthread_detach()를 사용안할 경우입니다.
[제 생각으로 짜본 경우는, USR1 signal를 Thread_1에 주어 pthread_exit()를 호출하고, TERM signal를 Main_Thread에 주어 pthread_join()을 호출하게 하였는데, 이것은 좀 코딩이 복잡하게 될것 같아서 다른방법이 있는지 질문하는 것입니다.]
넘 광범위한 질문인거 같은데, 고수님들의 넓은아량으로 답변 부탁드립니다...
댓글 달기