인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

윈우님의 프로필 이미지
윈우

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part9: MMO 컨텐츠 구현 (DB연동 + 대형 구조 + 라이브 준비)

HP 연동 #1

EF사용시 async사용

작성

·

183

0

EF 변경사항을 저장할 때 SaveChangeAsync가 아닌 SaveChange를 사용하게되면 해당 쓰래드는 blocking이 발생할텐데 괜찮나요?

 

제 추측으론

EAP 기반 IO 통신이기때문에 어차피 패킷요청마다 개별의 쓰래드에서 처리가되니 굳이 async를 사용안해도 다른 패킷(Thread)에 대한 blocking이 이러나지 않으니까 그냥 SaveChange를 사용한건가? 라고 생각하긴 했는데

 

선생님의 답변을 듣고싶습니다.

답변 1

0

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

네 맞습니다.
물론 블로킹이 일어나지만 그래서 단독으로 DB 전용 쓰레드를 배치한 것이고요.
실제로 이 부분이 오랜 궁금증 중 하나였는데,
제가 경험한 모든 MMO에서는 DB는 그냥 블로킹으로 처리하는 대신
(어차피 완료되어야 이어받아서 로직 처리할 수도 있고)
별도의 DB 쓰레드를 배치하는 경우가 많았습니다.
강의 예제의 경우에는 상황이 단순하지만, 경우에 따라 DB 작업 순서도 이슈가 되는 경우도 있고 해서
반드시 완료 후에 다음 작업을 요청하게 되어 있습니다.

윈우님의 프로필 이미지
윈우

작성한 질문수

질문하기