JobQueue3 04_07_Job Queue_JobTimer 개요 이 문서는 서버 프로그래밍에서 시간 관리를 효율적으로 할 수 있는 방법에 대해 설명하고 있습니다. 주로 게임 서버에서 여러 객체가 동작해야 하는 경우를 대상으로 이야기하고 있으며, 이를 위한 두 가지 접근 방식을 제시하고 있습니다. 1. Tick을 이용하는 방법: 가장 간단한 방법으로, 주기적인 시간 간격으로 객체의 동작을 갱신하는 방식입니다. 이 방식의 장점은 간단하고, 멀티스레드에 대한 복잡한 이해 없이도 쉽게 사용할 수 있다는 것입니다. 그러나, 서버에 여러 객체가 존재하고 각 객체마다 갱신 타이밍이 다른 경우 while 문 안에 모든 로직을 넣어야 하므로 복잡해질 수 있습니다. 2. 예약 시스템을 이용하는 방법: 더욱 세련된 방법으로, PriorityQueue를 이용한 예약 시스템을 제안합니.. Server programming 2023. 5. 17. 04_06_Job Queue_패킷 모아 보내기 패킷 모아 보내기는 컴퓨터 네트워킹에서 여러 패킷을 모아 하나의 패킷으로 보내는 방법입니다. 이 과정은 많은 작은 패킷을 보내는 경우에 특히 네트워크 효율성을 높이고 오버헤드를 줄일 수 있습니다. 이 문맥에서 주요 아이디어는 패킷을 대기열(_pendingList)에 추가하는 작업과 패킷을 보내는 작업을 분리하는 것입니다 밀어 넣는 작업과 보내는 작업이랑 분리를 해서 모이면 Send를 하는 거. 모으는 작업을 서버단인 Session에서 할 수 도 있고 컨텐츠단인 GameRoom에서 할 수도 있다. 여기서는 컨텐츠단에서 하는 것을 살펴보자. 1.패킷 모아 보내기 1_1. 밀어 넣는 작업과 보내는 작업이랑 분리 GameRoom에 List _pendingList = new List(); 를 생성하고, GameR.. Server programming 2023. 5. 16. 04_05_Job Queue_JobQuene#2 개요: 서버 백로그 및 레지스터 설정, 작업 큐 관리, 클라이언트 연결 및 패킷 전송 최적화 서버 백로그 및 레지스터 설정: 서버의 Listener에서 백로그(서버가 새로운 요청을 거부하기 전에 대기할 수 있는 최대 연결 요청 수)와 레지스터(생성할 소켓의 수)를 설정할 수 있도록 코드를 수정합니다. 이는 동시다발적인 연결 요청이 있더라도 멀티스레드 환경에서 효율적으로 처리할 수 있도록 도와줍니다. 작업 큐 관리 방법: 서버에서는 일감을 큐에 차곡차곡 쌓고 순차적으로 실행하는 방식을 사용합니다. 각 작업은 ITask 인터페이스를 구현하는 클래스로 표현되며, 이 클래스는 Execute 메서드를 통해 작업을 실행합니다. 또한, 이 방식은 락을 사용하는 부분을 최소화하여 성능을 개선하는 데 도움이 됩니다. 작.. Server programming 2023. 5. 16. 이전 1 다음