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

jangkeya님의 프로필 이미지
jangkeya

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

쓰레드 생성

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

작성

·

675

0

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

답변 1

5

Rookiss님의 프로필 이미지
Rookiss
지식공유자

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

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

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

Rookiss님의 프로필 이미지
Rookiss
지식공유자

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

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

jangkeya님의 프로필 이미지
jangkeya

작성한 질문수

질문하기