• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

EF사용시 async사용

24.03.14 12:31 작성 조회수 96

0

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

 

제 추측으론

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

 

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

답변 1

답변을 작성해보세요.

0

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