HandlerMove lock 관련 질문 드립니다.
249
작성한 질문수 31
락이 없어도 정상 작동을 하지 않나요?
1) PlayerInfo info , S_Move resMovePacket , 매개변수 기반으로 만들어 지고 있으니 safe
2) Broadcast 안에 이미 락이 있으니 safe
3) C_MoveHandler 에서 player , room 참조를 한번더 받았으니 크래쉬로 부터 안전
서버 프로그래밍 에선 락이 제일 어려운거 같습니다.
답변 1
0
네 맞습니다. 그리고 아주 잘하고 계십니다 ㅎㅎ
처음엔 어느 부분이 경합이 일어나는지조차 헷갈리는데요.
(특히 C++ 시작해서 메모리에 대한 이해가 있는 상황이 아니라면)
여기선 movePacket는 1개의 쓰레드에서만 알아 문제 없지만,
player가 경합해서 사용하는 객체입니다.
문제 되는 부분은 빨간색 부분이고, 특히 info.PosInfo를 덮어쓰고 있는데요.
좌표 갱신 측면에서 정말 깐깐하게 먼저 온 패킷 순서대로 해줘야 한다면
락을 잡고 보장을 처리해줘야 할 것이고, 크게 상관없다면 락을 걸지 않더라도 되겠죠.
나중에 가서 골드라거나 더 중요한 정보가 있다면 락은 걸어줘야
이상한 상황을 예방할 수 있을겁니다.
(ex. 골드가 두번 연속으로 setgold(1000), setgold(500)을 순차적으로 요청했는데,
락을 안 걸고 타이밍 이슈로 뒤에부터 실행되면서 최종 골드가 500이 아닌 1000이 될 수도 있겠죠)
Lessons 3 & 4 don't have subtitles unfortunately
0
39
1
MessagePack
0
105
1
본인 플레이어 이동 관련 질문
0
69
1
Part7 Part9 질문이 있습니다.
0
89
1
.
0
131
1
.
-1
119
2
게임 로직 루프에서 게임 틱 누락으로 인한 높은 CPU 사용 문제
0
103
1
타일 팔레트 깔았는데도 안돼요
0
149
2
2D로 그냥 만들어도 되나요?
0
95
2
지난 강의와 이어지는게 맞을까요?
0
96
2
순환참조 문제로 인해 발생하는 문제는 없을까요?
0
166
2
유니티 클라와 C++서버연동
0
291
2
멀티플레이 테스트 환경 관련 질문입니다
0
227
3
강의 후반부에 순서 동기화를 위해 잡큐를 사용 안 한 부분 질문입니다!
0
164
2
코드 관련한 몇 가지 질문입니다!
0
168
2
3d 프로젝트 이동 동기화 관련
0
343
4
파트 7 스트레스 테스트 질문 드립니다.
1
204
2
맵 이동 방식
0
144
0
맵 이동 관련해서 질문드립니다.
0
97
1
안녕하세요 도저히 알 수 없는 오류가 나와서 질문드려요,,
0
223
2
안녕하세요. 일전에 질문 드린 포폴 준비 관련 질문의 추가 질문입니다!
0
173
1
[팁] 2024년 기준 버전 이슈?
0
469
1
SendBuffer.cs 삭제 후 대체 되는 부분의 장단점?
1
210
1
지금 강의의 유니티 클라를 IOCP 서버와 연동하는 것
0
343
2





