채팅 서버에서 사용하는 Packet은 메시지를 전송하기 전에 할당하므로 매우 많이 동적할당하게 된다.
따라서 ObjectPool을 이용해 새로 할당받고 사용하지 않으면 반납한 후, 안에 저장중인 Packet을 대여해준다.
static ObjectPool<Packet> _objectPool; // ObjectPool을 사용하여 Packet을 할당
이처럼 static으로 선언하여 Packet 클래스가 전역으로 objectPool을 관리하도록 해준다.
// Packet을 할당
static Packet* Alloc();
// Packet을 반납
void Free();
Alloc을 이용해 Packet을 할당받고 Free를 이용해 반납한다.
✅ 사용방법
Packet* packet = Packet::Alloc(); // packet 할당
... // packet에 데이터담음
packet->Free(); // packet 반납
'ChattingServer' 카테고리의 다른 글
[ChattingServer] IP 확인해서 거절하기 (0) | 2025.06.20 |
---|---|
[ChattingServer] Lockfree Stack을 이용해 session 관리 (0) | 2025.06.20 |
[ChattingServer] DummyClient ( 더미 ) (1) | 2025.06.11 |
[ChattingServer] 채팅 서버 프로토콜 (0) | 2025.06.06 |
[ChattingServer] CriticalSection으로 SendQueue 동기화 (1) | 2025.06.06 |