• 카테고리

    질문 & 답변
  • 세부 분야

    시스템

  • 해결 여부

    미해결

스레드 생성, join 질문

19.08.18 17:59 작성 조회수 109

1

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

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

답변 1

답변을 작성해보세요.

1

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