inflearn logo
강의

講義

知識共有

Linuxシステムプログラミング - 理論と実践

pthread_create() 함수 이용했을 때, thread가 두번 호출되는 것 처럼 나타납니다. 왜 그런것인가요?

487

smile2000

投稿した質問数 8

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가지로 나타납니다.

  1. End of main

     

  2. End of main

    thread is created!:thread is created!:140319790982912

  3.  

  4. End of main

    thread is created!:140328472020736

    thread is created!:140328472020736

 

linux

回答 1

1

learnit

안녕하세요 smile2000님

fork()와 마찬가지로 thread를 생성한 후 join으로 기다려주지 않으면 그냥 지나가버릴 수도 있습니다. 혹은 운좋게 thread가 생성될 수도 있습니다. 한마디로 결과를 예측하기 어렵게 됩니다. 그래서 결과가 여러 가지 형태로 나타나는 것입니다.

1번 결과는 thread가 생성/실행되지 않고 메인 코드가 종료된 경우이고,
2번 결과는 thread가 생성/실행된 후 메인 코드가 종료된 경우입니다.
3번의 결과는.. 저도 원인을 잘 모르겠습니다.ㅠ

실험 정신이 뛰어나신 것 같습니다. :) 기대하신 답변드리지 못해 죄송합니다.ㅠ

 

0

smile2000

네- 설명 감사합니다.

inotify 객체에 등록된 watch descriptor 해제 관련 질문

0

37

2

select API 실습 코드 질문

0

40

2

wsl에서 fcntl사용

0

72

2

inotify_event 구조체 질문 [파일 이벤트 - 라이브 프로그래밍]에서...

0

179

2

./stat 파일이름

0

273

2

fopen r, r+모드 차이

0

460

2

강의를 모두 수강하고 스스로 구현하면 좋을 과제나 프로젝트 주제가 있을까요?

0

326

1

pthread 질문

0

419

2

I/O Multiplexing(select) 질문

0

325

1

inotify.c. ret 질문

0

302

1

inotify.c 질의합니다.

1

317

1

child process

0

715

1

read/blocking

0

564

1

flock

0

565

1

system call

0

598

1

fork() 함수 사용시 결과 관련 질문

0

371

1

exec 관련 궁금한 사항

0

450

2

파일 디스크립터와 FILE 구조체에 대한 질문

0

552

1

buf 선언에 따른 read() fail 문제

0

251

2

파일 이벤트 - 라이브 프로그래밍 에서 캐스팅 질문

0

254

1

2번 multi thread 방법 질문

0

242

1

segmentation fault 발생 관련 문의

1

842

1

라이브 코딩 실습 코드

0

235

1

화면이 짤려요

0

549

4