이해한 것이 맞나 궁금합니다.
285
15 asked
플레이어가 disconnected될 때 게임룸에서 Push를 하여 LeaveGame을 예약을 했었는데요.
현재 JobSerializer를 상속하는게 DbTransaction과 GameRoom 두 개가 있는데 쉽게 두 개의 쓰레드가 있다고 생각하면 되는지 모르겠습니다.
하나의 게임룸에서 일감이
- 플레이어A의 LeaveGame
- 플레이어B의 전투
- 플레이어C의 전투
...
이렇게 쌓여있을 때 플레이어A가 나갔을 때 현재 상태를 DB에 저장한다고 하면 I/O를 처리하는데 시간을 많이 잡아먹으면 플레이어B와 C의 전투 처리 코드가 지연이 되기 때문에, DbTransaction 쓰레드로 DB 일감을 Push하여 거의 같은 시각에 봤을 때 플레이어B의 전투와 플레이어A의 DB 갱신 로직이 처리될 수 있다고 이해했는데 이렇게 생각하면 될까요?
세 지점에 브레이크 포인트를 찍어서 쓰레드를 관찰해봤는데 위에서 차례대로 24132 -> 주쓰레드 -> 9440 이렇게 변화가 있었는데요. 전부 Push로 예약을 하는 입장에서 왜 DbTransaction에 Push한 일감만 주쓰레드에서 처리하는지도 궁금합니다.
Answer 1
0
이렇게 쌓여있을 때 플레이어A가 나갔을 때 현재 상태를 DB에 저장한다고 하면 I/O를 처리하는데 시간을 많이 잡아먹으면 플레이어B와 C의 전투 처리 코드가 지연이 되기 때문에, DbTransaction 쓰레드로 DB 일감을 Push하여 거의 같은 시각에 봤을 때 플레이어B의 전투와 플레이어A의 DB 갱신 로직이 처리될 수 있다고 이해했는데 이렇게 생각하면 될까요?
네 맞습니다!
세 지점에 브레이크 포인트를 찍어서 쓰레드를 관찰해봤는데 위에서 차례대로 24132 -> 주쓰레드 -> 9440 이렇게 변화가 있었는데요. 전부 Push로 예약을 하는 입장에서 왜 DbTransaction에 Push한 일감만 주쓰레드에서 처리하는지도 궁금합니다.
꼭 주 스레드에서 처리할 필요는 없구요.
새로운 쓰레드를 만들어서 DB 업무를 맡겨도 동일합니다.
단순히 주 스레드가 딱히 할 일이 없으니 그거라도 시킨(?) 것이죠.
마우스 이벤트 처리방법(오브젝트간 인터렉션)
0
621
1
RecvArgs_Completed에서 lock을 안하는 이유
0
516
1
Entity framework 질문드립니다.
0
574
2
json 직렬화
1
287
1
mmo 와 pvp
0
533
2
github로 프로젝트를 push, pull할 때 질문
1
529
1
Iocp 서버 관련 질문드립니다.
0
327
1
서버 관련 질문
0
395
1
DB 처리관련 질문이 있습니다
0
301
1
안녕하세요. 질문드립니다.
1
1507
2
마이그레이션 파일이 이상합니다.
0
281
1
강의 마지막으로 질문 드립니다.
0
678
2
ItemDbId,구조 설계
0
264
1
MMO 서버 관리 질문 드립니다!
0
321
1
디비 정보 나누기
0
239
1
AccountDb 업데이트
0
306
1
콘솔창이 아니라 브라우저에서 실행
0
280
2
메모리 누수문제.
0
495
1
유니티에서 클라이언트 빌드후 실행하면 맵 로드가 안됩니다.
0
362
1
외부 네트워크에서도 접속해서 게임하기
1
338
1
유니티클라에서 패킷을 계속 보내지 않고 lockstep이나 추측항법으로 동기화를 할 수 있을까요?
0
596
1
서버 메모리와 DB 저장 관련 질문
0
368
1
JsonUtility.FromJson 관해서 질문있습니다.
0
276
1
DB 쓰레드 질문입니다
0
267
1

