강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

이웅희님의 프로필 이미지
이웅희

작성한 질문수

리눅스 시스템 프로그래밍 - 이론과 실습

스레드 생성, join 질문

작성

·

166

1

스레드를 생성하고 함수를 실행하는 것이 먼저인데

왜 join 메시지가 먼저 뜨는건가요?

답변 1

1

런잇(ProgCoach4U)님의 프로필 이미지
런잇(ProgCoach4U)
지식공유자

쓰레드를 생성하는 create_thread()는 child thread가 시작된 후에 리턴하는 것이 아닙니다. 생성 요청만 해놓고 리턴한다고 생각하시면 되겠네요. 그래서 child thread의 실행 직후 코드(thread main 함수의 시작 부분)보다 parent thread의 create_thread() 반환 직후 코드 실행이 더 빠른 경우가 많습니다. 하지만 이것도 보장된 것은 아닙니다. 어떤 연유로 인해 child가 더 먼저 실행되는 경우도 있습니다. 이렇게 OS가 생성되는 쓰레드의 실행 순서를 보장하지 않기 때문에 실행 순서가 중요한 경우에는 쓰레드 간 동기화 기법을 적용하는 것이 좋습니다.

이웅희님의 프로필 이미지
이웅희

작성한 질문수

질문하기