-
카테고리
-
세부 분야
시스템
-
해결 여부
미해결
pthread_create() 함수 이용했을 때, thread가 두번 호출되는 것 처럼 나타납니다. 왜 그런것인가요?
22.12.05 13:18 작성 조회수 223
0
#include<stdio.h>
#include<stdlib.h>
#include"pthread.h"
void thread(void vargp);
void main()
{
pthread_t tid;
pthread_create(&tid,NULL,thread,NULL);
//pthread_join(tid,NULL);
printf("End of main\n");
exit(0);
}
void thread(void vargp)
{
printf("thread is created!:%lu\n",pthread_self());
return NULL;
}
결과가 3가지로 나타납니다.
End of main
End of main
thread is created!:thread is created!:140319790982912
End of main
thread is created!:140328472020736
thread is created!:140328472020736
답변을 작성해보세요.
1
ProgCoach4U
지식공유자2022.12.07
안녕하세요 smile2000님
fork()와 마찬가지로 thread를 생성한 후 join으로 기다려주지 않으면 그냥 지나가버릴 수도 있습니다. 혹은 운좋게 thread가 생성될 수도 있습니다. 한마디로 결과를 예측하기 어렵게 됩니다. 그래서 결과가 여러 가지 형태로 나타나는 것입니다.
1번 결과는 thread가 생성/실행되지 않고 메인 코드가 종료된 경우이고,
2번 결과는 thread가 생성/실행된 후 메인 코드가 종료된 경우입니다.
3번의 결과는.. 저도 원인을 잘 모르겠습니다.ㅠ
실험 정신이 뛰어나신 것 같습니다. :) 기대하신 답변드리지 못해 죄송합니다.ㅠ
답변 1