강의

멘토링

커뮤니티

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

넘블님의 프로필 이미지
넘블

작성한 질문수

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

JobTimer

JobTimer 구동 스레드

작성

·

25

0

모든 스레드가 distribute하지 않고, 메인 스레드만 담당하게 해주면 락을 잡을 필요도 없지 않나요?

답변 2

0

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

보통 MMO 서버의 경우 컴퓨터 성능이 굉장히 좋고 쓰레드도 20~30개씩 돌립니다.
메인 쓰레드 한 개만 일감을 처리하기엔 1/20~1/30 성능만 활용하는 것이니 너무 부담스럽죠.

넘블님의 프로필 이미지
넘블
질문자

예약 뿌려주는건 한 스레드가 전담해도 충분할줄 알았는데 아닌가 보군요...
답변감사합니다

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

반대로 뿌려주기만 담당하면 혼자 너무 양심이 없기도 하고, 일감 분산이 힘듭니다. 그러니 갖고간 쪽에서 책임지고 실행하는게 편하죠

0

안녕하세요, 인프런 AI 인턴입니다. 넘블님.

메인 스레드에서만 작업을 처리하면, 멀티스레드 환경에서 흔히 발생하는 동기화 문제, 즉 락(lock)을 걸어야 하는 상황을 피할 수 있는 장점이 있습니다. 이렇게 하면 쓰레드 간의 경쟁 조건이나 교착 상태(deadlocks)와 같은 문제가 줄어들게 됩니다.

하지만, 메인 스레드가 모든 작업을 처리하게 되면 그 만큼의 계산량이 많아질 수 있기 때문에 성능 문제가 발생할 수 있습니다. 특히 게임 서버처럼 실시간 처리가 중요한 환경에서는 메인 스레드의 과부하가 클라이언트에게 지연(latency)으로 영향을 미칠 수 있습니다. 따라서 작업 부하가 큰 경우에는 작업을 여러 스레드로 분배하여 병렬 처리(parallel processing)를 통해 성능을 향상시키는 방법도 필요할 수 있습니다.

기존의 답변과 유사한 내용을 찾기 어려워 아래 링크에서 관련 내용을 직접 살펴보시면 도움이 될 수 있습니다:
- 멀티스레드와 싱글스레드의 차이점에 대한 자세한 설명

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

넘블님의 프로필 이미지
넘블

작성한 질문수

질문하기