• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

스레드 관련해서 원초적인 궁금증이 생겼습니다.

21.10.22 16:27 작성 조회수 478

0

강사님 안녕하세요,
좋은 강의를 잘듣고 있습니다.
스레드 관련하여 궁금한점이 생겨 질문드립니다.
 
1. 스레드가 서로 데드락 현상으로 꼬이지 않는다는 전제하에, 스레드는 많으면 많을 수록 좋은게 아닌가요?
 
2. 만약 많을수록 단점이 있다면, 어떤 단점이 있고, 몇개까지 만들어야 적당한 스레드 개수 일가요?

답변 1

답변을 작성해보세요.

5

1. 절대 아닙니다.
2. CPU 코어 개수랑 동일하게 만들어서 실행되는 상태가 가장 아름다운 상황입니다.
따라서 보통 쓰레드 개수를 CPU 코어 개수 * 1.5 정도로 하는 경우가 많습니다.
context switching 비용 때문에 그 이상으로 쓰레드를 만들면,
오히려 쓰레드 교체 비용 때문에 역효과를 냅니다.

위 부분은 면접에서 매우 매우 자주 나오는 질문이니 기억해주시면 좋습니다.

김원님의 프로필

김원

2022.08.04

말씀하신대로라면, 코어 개수와 동일하게 만들어 실행되는 상태가 가장 아름다운 상황임에도 불구하고 코어개수의 1.5배만큼 스레드를 생성하는 이유는 무엇입니까?

이상적인 상황이 항상 유지되지 않기 때문입니다
실제로 운영체제는 아주 많은 프로그램들을 동시에 실행하고 있고
스케줄링 정책을 통해 실행 시간을 부여하는데
이런 부분들 때문에 실제 코어 갯수보다는 조금 더 많이 쓰레드를 생성하는게
'실험적으로' 성능이 좋습니다.

다만 (Xbox, PS등)콘솔이나 일부 환경에서는
정말로 코어 개수만큼 쓰레드를 생성하기도 하고
애당초 운영체제가 게임에 맞게 특화되어 있습니다.