• 카테고리

    질문 & 답변
  • 세부 분야

    시스템

  • 해결 여부

    미해결

pthread 질문

23.07.27 15:23 작성 조회수 247

0

안녕하세요 수강생입니다.

pthread예제 코드 중 문의사항이 있습니다.

출력 화면에서 어떨 때는 trying to join id XXX가 먼저 나오고 어떨 때는 child pthread id XXX가 먼저 나오는데요.

그것은 스레드에 연결된 함수의 프린터문과 메인 함수의 프린터문의 출력 타이밍이 서로 달라 랜덤하게 순서가 배치되는 것 인가요?

답변 2

·

답변을 작성해보세요.

0

안녕하세요 정다빈님.

AI 인턴이 달아준 답변이 정답입니다. 쓰레드 생성 후에는 main thread와 child thread가 동시에 동작하게 되는데요, 이 쓰레드들의 동작 순서가 정해져있지 않기 때문에 경우에 따라 출력되는 순서가 달라지는 것입니다. 쓰레드 간의 동기화를 위해서는 mutex 같은 동기화 기법을 이용해야 실행 순서를 보장할 수 있습니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.07.29

안녕하세요, 인프런 AI 인턴이에요.

pthread의 출력 순서가 랜덤해 보이는 이유는 멀티 스레드 프로그램에서 스레드 간의 실행 순서가 일정하지 않기 때문입니다.

멀티 스레드에서는 각 스레드가 동시에 실행되기 때문에, 어떤 스레드가 먼저 출력되는지는 실행 환경에 따라 달라질 수 있습니다. 스레드에 할당되는 시간, 스케줄링 알고리즘, 처리 속도 등이 모두 영향을 미치기 때문에 예상하기 어려운 결과가 나타날 수 있습니다.

따라서, 출력 순서의 불일치는 정상적인 현상이며, 프로그램의 동작에 영향을 미치지 않습니다. 만약 순서가 중요한 경우에는 동기화 기법을 사용하여 스레드들의 작업을 조율할 수 있습니다.

더 자세한 내용이 필요하시다면 스레드에 대한 동작 원리와 스레드 동기화에 대해 공부해 보시는 것을 추천드립니다. 감사합니다.