pthread_join 과 Block
글쓴이: toughguy / 작성시간: 금, 2007/12/21 - 4:15오후
안녕하세요~
A라는 쓰레드에서 B라는 Thread를 띄우고 결과값을 받기위해,
B에선 pthread_exit 로 파라미터를 넘기고
A에선 pthread_join 로 파라미터를 받는 것으로 알고 있습니다.
그런데, A라는 쓰레드에서 pthread_join을 호출 하였을 경우,
B Thread가 종료될 때 까지 Block 되어 있네요..
만약 Timeout 같은 것을 걸어, 일정 Time 동안 B Thread가 종료되지 않는다면,
강제로 종료시키려 합니다.
어떤식으로 하면 될까요~?
지금 생각해본 방법은, A가 B를 띄울때, Timeout을 관리하는 쓰레드를 하나 더 띄우면
될 듯한데, 비효율 적이란 생각이 드네요 -_-;
많은 도움 부탁드립니다.
Forums:
condition variable을
condition variable을 만들고 A가 pthread_cond_timedwait 호출하는 방법이 있겠네요.
쓰레드 A가 마냥
쓰레드 A가 마냥 기다리는게 싫다면, 이렇게 하는건 어떨까요?
쓰레드 A,B 사이에 공유 변수 하나 두고,
쓰레드 B는 끝나면 공유 변수에 끝났다고 쓰도록 만들구요,
쓰레드 A는 쓰레드 B를 만든후, sleep 같은걸로 일정시간 기다린후,
공유 변수에 끝났다고 써 있으면, pthread_join(B)하고, 아니면 pthread_kill(B) 해버리는거죠.
도움이 되시길.
결과값을 pthread_exit()로 받지 않으면..
결과값을 굳이 pthread_exit()를 통해 받아야 할 이유가 있나요?
쓰레드B를 detached state로 생성하면 pthread_join()을 호출할 필요도 없어지고,
쓰레드A가 블럭될 이유도 없을 거 같은데요..
댓글 달기