inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

쓰레드 생성

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

784

jangkeya

작성한 질문수 12

0

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

스레드 network windows-server MMORPG

답변 1

5

Rookiss

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

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

0

김원

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

0

Rookiss

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

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

컨텐츠 레이어 C++ vs C#

0

10

0

writeLock을 잡을때 꼭 empty 상태여야하는 이유?

0

31

2

Memory Pool에서 오버플로우 질문입니다.

0

70

2

포토폴리오 및 진로 관련하여 고민입니다.

0

125

1

포토폴리오 관련 고민입니다.

0

64

1

실무에서도 alloc, 스마트포인터 등을 구현해서 쓰는지 궁금합니다.

0

85

2

성능 테스트 결과

0

105

2

게임 서버 Stateful, Stateless 진로 고민

0

127

1

WaitOnAddress와 Sleep의 차이 질문

0

84

1

궁금한거 있습니다.

0

83

2

JobTimer 구동 스레드

0

107

2

TryPop() 동작 관련 질문

0

81

1

로드맵 C#서버 C++서버 방향성 질문

0

151

2

스레드 id를 출력할떄 메인스레드 id도 출력되나요?

0

73

1

생명주기를 위한 의도적 복사

0

87

2

락프리의 실무에서 사용 질문

0

143

2

32bit threadID와 16비트 상위 WriteFlag에 대해

0

103

2

mutex와 sleep 차이점

0

119

1

실무에서는 어떠한 코드 스타일을 사용하는지 궁금합니다

0

156

2

Stomp Allocator의 Release함수에 대한 질문입니다.

0

97

1

공부법 관련해서

0

184

2

MakeShared 함수 관련

0

114

1

지금까지 서버코어에서 만든 내용에 대해 궁금한 점이 있어서 질문 드립니다.

0

144

2

운영체제관련 질문입니다

0

132

1