• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

GameRoom 질문드립니다.

24.04.04 09:52 작성 조회수 67

0

안녕하세요. 강의 잘듣고있습니다.!

GameRoom을 하나의 스레드로 jobqueue를 사용해서 공유자원을 관리 하면 lock에서는 자유롭지만 하나의 스레드인 만큼 많은 처리를 해야할 경우 딜레이가 생길수도 있을거라고 생각하는데 lock을 타이트하게 거는 방법보다 하나의 스레드에서 처리하는게 속도가 더 빠른가요?

 

답변 2

·

답변을 작성해보세요.

0

tkddlsdndb님의 프로필

tkddlsdndb

질문자

2024.04.04

음 궁굼한것은 안전성이아니라 속도입니다. 하나의 스레드로 룸을 관리하니 결국 작업을 하나씩처리에 따른 속도를 사용해도 속도 이슈가 없는지 궁굼합니다. 예를들어 갑자기 수많은 이용자가 들어와 엔터패킷을 탄다면 디비도 접근해야될때 이에 따른 실시간 처리 성능이 보장되는지 궁굽합니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.04.04

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

tkddlsdndb님의 질문에 대해 GameRoom이 하나의 스레드로 JobQueue를 사용하여 공유 자원을 관리하는 방식과 관련하여, lock을 사용하는 것과 비교했을 때의 성능 측면에 대한 질문으로 해석됩니다.

이러한 내용과 관련해서는 멀티 스레드 환경에서의 자원 관리 및 JobQueue의 활용 방식에 대해 설명한 ”[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)” 강의에서 다루고 있는 부분이 일정 부분 있습니다. 특히, 스레드 안전성(thread safety) 및 병렬처리를 위한 JobQueue의 사용법을 다루어, 공유 자원에 대한 접근 관리 및 대기 시간 최소화 전략에 대해 학습할 수 있습니다.

여기서 추가적인 관점으로, 일반적으로 lock을 사용한 동기화 방식보다는 JobQueue와 같이 작업 단위를 분리하여 처리하는 방식이 컨텍스트 스위칭 등의 오버헤드를 줄일 수 있으며, 잠금 대기 시간을 최소화하여 전반적인 성능을 향상시킬 수 있습니다. 하지만 이것이 항상 모든 상황에서 더 우수한 성능을 보장하는 것은 아니며, 애플리케이션의 특성과 실제 처리해야 할 작업의 종류에 따라 최적의 접근 방식이 달라질 수 있습니다.

질문하신 내용에 가장 밀접하게 답변해 줄 수 있는 내용으로, 유니티를 이용한 게임 서버 구현에서 Job Queue와 멀티 스레드를 효과적으로 사용하는 방법에 대해 설명한 아래의 정보가 도움이 될 것입니다:

  • 멀티 스레드 질문 드립니다: GameRoom이 JobQueue를 사용하여 멀티 스레드 환경에서의 안전성을 어떻게 보장하는지, 그리고 Flush 시의 안전성에 대해 설명하고 있습니다.
  • 강의 마지막 Room 처리 관련 질문입니다!: Room 처리와 관련하여 복사와 참조, 그리고 null 처리의 영향을 설명하며, 이를 통해 스레드와 작업 처리 방식의 이해를 돕는 사례를 소개하고 있습니다.

이 정보들을 통해 tkddlsdndb님의 궁금증에 대한 답변을 얻으실 수 있기를 바랍니다.

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