[TMI] 메인 스레드(?)와 프로세스

dandb3·2023년 3월 23일
0

이것저것 TMI

목록 보기
5/17

하나의 프로세스를 실행하던 여러 스레드가 존재한다고 해 보자.
여기서 프로세스가 종료된다면 당연히 실행되던 스레드들도 모두 종료된다.
즉, 하나의 스레드에서 exit이 호출되거나 main문을 실행하던 스레드가 return을 했을 경우에 해당될 것이다.
하지만 그것과 "main문을 실행하던 스레드가 종료했을 경우 프로세스가 종료한다"라는 말은 서로 다르다.
그냥 exit 말고 pthread_exit함수가 존재하는데, 이 함수는 이름 그대로 해당 스레드만 종료한다는 뜻이다.
그래서 실제 main문을 실행하던 스레드에다가 pthread_exit함수를 실행하게 되면 프로세스는 종료되지 않는다. (만약 이 스레드 외에 다른 스레드가 존재한다고 했을 때)
물론 남아있는 스레드가 1개이고 여기서 pthread_exit함수를 실행하게 되면 프로세스는 정상적으로 exit으로 인해 종료된다.

  • After the last thread in a process terminates, the process
    terminates as by calling exit(3) with an exit status of zero;
    thus, process-shared resources are released and functions
    registered using atexit(3) are called. - man pthread_exit(3)

참고 자료

profile
공부 내용 저장소

0개의 댓글