Server/Multithreading

Server/Multithreading

[Object Pool] SList를 사용한 Object Pool 구현(2)

SList(Interlocked Singly Linked List)를 활용하여 Object Pool을 구현해봤다. Poolable Object Pool을 통해 관리할 객체들은 Poolable 클래스를 상속받아야 한다. Poolable 객체는 Object Pool에 의해 관리된다. operator new와 delete를 오버로딩하여 object pool을 사용한 할당과 해제방식으로 변경했다. new 연산자에서는 object pool에서 객체를 하나 꺼내오고, delete 연산자에서는 object pool에 사용한 객체를 넣는다. Object Pool Object Pool은 SList를 통해 구현했다. Push는 리스트에 Poolable 객체를 넣는 메소드다. InterlockedPushEntrySList ..

Server/Multithreading

[Object Pool] SList를 사용한 Object Pool 구현(1)

SList를 사용해서 Object Pool을 구현해 보려고 한다. 구현에 앞서 SList에 대해 알아보자 Interlocked Singly linked list(SList) MS에서 제공하는 연결 리스트로 atomic operation을 지원한다. 모든 항목은 MEMORY_ALLOCATION_ALIGNMENT boundary에 정렬되어야 한다. 정렬되지 않은 항목은 예측할 수 없는 결과를 초래할 수 있다고 한다. 따라서, 할당시 _aligned_malloc을 사용해야 한다. SList의 헤더는 SLIST_HEADER, 엔트리는 SLIST_ENTRY 타입이다. SLIST_HEADER SList의 헤더로, 맨 처음에 위치한 아이템을 가리킨다. depth는 SList에 포함된 데이터의 개수를 의미한다. seq..

Tuesberry
'Server/Multithreading' 카테고리의 글 목록