수신 스레드 분산 질문이 있습니다.
360
작성한 질문수 16
안녕하세요 강사님. 수신 스레드 분산 관련 질문이 있습니다.
제가 배운 바에 의하면 송수신 속도 차이의 원인으로 다양한 걸 뽑을 수 있지만 의심해봐야 할 것은 '수신이 송신 속도를 따라잡지 못할 경우' 라고 알고있는데요.
저는 클라 입장에서 서버로부터 받는 recv가 쌓일 경우를 생각해보았습니다. 클라는 서버이외에도 렌더링이라던가 여러가지 상호작용의 일감을 처리해야 하니까 일 자체가 많아서 서버로부터의 recv가 쌓일수도 있지 않을까? 라는 의문점때문에요!
그래서 클라에서는 완료된 recv를 메인스레드에서 바로 받고 처리하는게 아닌 공용 메모리 큐에다가 일감을 넣어주고.
해당 공용 메모리 큐를 무한루프로 감시하는 스레드를 별도로 두었습니다. 다만, 해당 스레드는 그 일감 자체를 스레드 내부에서 처리하지는 않고 다시 메인스레드의 해당 일감처리 함수를 호출해주는 방식입니다.
제가 의도했던건 IOCP모델에서 CP큐에 담겨져있는걸 최대한 빨리 빼오자 의도이지만, 사실 메인스레드에서 일처리 자체의 타이밍을 나중으로 미루는것이라서 조삼모사인 구조인가 의문이 들어 질문드립니다!
답변 1
0
그렇게 하는게 지극히 정석입니다.
서버쪽 코드는 바로 처리를 해도 무방하지만,
언리얼이나 유니티에선 게임로직은 반드시 게임 쓰레드에서 실행해야 하기 때문에
결국 큐에다가 조립 완료된 패킷을 넣어주고,
메인쓰레드가 꺼내가는 식으로 작업을 하게 됩니다.
Memory Pool에서 오버플로우 질문입니다.
0
63
2
포토폴리오 및 진로 관련하여 고민입니다.
0
112
1
포토폴리오 관련 고민입니다.
0
62
1
실무에서도 alloc, 스마트포인터 등을 구현해서 쓰는지 궁금합니다.
0
82
2
성능 테스트 결과
0
103
2
게임 서버 Stateful, Stateless 진로 고민
0
121
1
WaitOnAddress와 Sleep의 차이 질문
0
83
1
궁금한거 있습니다.
0
82
2
JobTimer 구동 스레드
0
107
2
TryPop() 동작 관련 질문
0
81
1
로드맵 C#서버 C++서버 방향성 질문
0
148
2
스레드 id를 출력할떄 메인스레드 id도 출력되나요?
0
73
1
생명주기를 위한 의도적 복사
0
86
2
락프리의 실무에서 사용 질문
0
139
2
32bit threadID와 16비트 상위 WriteFlag에 대해
0
101
2
mutex와 sleep 차이점
0
117
1
실무에서는 어떠한 코드 스타일을 사용하는지 궁금합니다
0
152
2
Stomp Allocator의 Release함수에 대한 질문입니다.
0
96
1
공부법 관련해서
0
183
2
MakeShared 함수 관련
0
114
1
지금까지 서버코어에서 만든 내용에 대해 궁금한 점이 있어서 질문 드립니다.
0
144
2
운영체제관련 질문입니다
0
131
1
send하려는 데이터 크기가 크면 memcpy에서 문제가 발생할 것 같습니다.
0
117
2
메모리 풀 질문있습니다.
0
124
1





