pthread_detach 질문하나만 할께요
글쓴이: 1lee123 / 작성시간: 목, 2011/12/01 - 10:15오전
제가 스레드 부분을 공부하고 있는데 이런 코드가 있더라구요
pthread_create(&threadID, NULL, func, (void *)0);
pthread_detach(threadID);
이렇게 detach하는 경우가 있구요 또 하나는
pthread_create(&threadID, NULL, func, (void *)0);
void* func(void* pArg)
{
pthread_t pthid;
pthid = pthread_self();
pthread_detach(pthid);
}
이렇게 detach하는 경우가 있더라구요
제 생각에는 두 상황이 동일하다고 생각되는데 혹시 차이점이 있나요?
아니면 각각의 상황마다 잇점? 뭐 이런게 있나요?
제 머리로는 도저히 모르겠습니다 ㅜㅜ
Forums:
별차이 없어보입니다. 쓰레드 생성할때.. attr
별차이 없어보입니다.
쓰레드 생성할때.. attr 값에 detach 속성을 주게 되면..
int pthread_create( pthread_t *th_id, const pthread_attr_t *attr, void* 함수명, void *arg );
pthread_detach() 를 사용하지 않아도 동일한 효과를 줍니다.
만약 child가 먼저 실행되어 pthread_detach() 전에 종료하면
첫번째 코드의 경우,
만약 child가 먼저 실행되어 parent가 pthread_detach() 호출하기 전에 종료하면, 의도한 바와 다르게 동작할 수 있을것 같네요.
권고한 데로, attribute에 사용하고자 하는 mode (joinable, detach)를 명시적으로 쓰는 것이 여러모로 좋을 것 같습니다.
(default가 joinable이 아닐 수도 있기에)
댓글 달기