LOGIN • JOININ

CGCII Object System


1... CGCII의 객체 관리 체계는...?

CGCII에서 사용되는 가장 기본적인 객체의 동적 할당과 참조계수를 사용한 객체의 관리 체계에대해 설명합니다.

또 효율적인 객체의 사용을 위해 풀을 사용해 객체를 관리하는 방법에 대해서도 설명합니다.
덤으로 시간에 관련된 내용도 튜터리얼에서도  여기에 추가했습니다.


2... 튜터리얼의 내용

Tutorial 1. Object Management

- 참조계수를  통한 할당해제 개념과 ICGRefenceable 클래스

-  자동 참조계수를 위한 CGPTR<T> 객체

-  new 연산자를 대신해 사용하는 NEW<T>() 함수


Tutorial 2. Object Pool

- 풀을 통한 할당해제


Tutorial 3. Memory Block Pool

- 메모리 블럭 풀의 할당과 사용 

CCGBuffer 클래스에 대한 이해.



심화 설명 


CGCII는 동적 객체의 생성과 할당 뿐만 아니라  생성부터 초기화와 관리까지 전반적인 처리에 대해서 크게  생성과소멸/ 생산관리/ 생성된 객체의 관리 3가지  구분해 체계화를 지원하고 있습니다.

물론 CGCII엔진을 사용한다고 이를 모두 따를 필요는 없지만 내부적으로 사용되고 있으며 체계적 동작을 위해 제안하는 체제입니다.


첫째, 객체의 생성과 소멸 관리 (Allocator and Pool)

CGCII의 동적 객체는 '참조계수'를 사용하여 소멸처리하며 스마트포인터 기능을 활용한 자동 처리를 지원합니다. 이를 위해서는  'ICGReferenceable' 인터페이스 클래스를 상속받아야만 합니다.


1) ICGReferenceable

2) CGPTR<T>

3) CGOBJ<T>


또  빈번한 동적 할당과 해제로 인한 성능의 하락을 막기 위해 고성능 풀시스템과 가지비 콜렉션 기능도 제공하며 이에 따른 통계 정보 역시 제공하고 있습니다.

궁극적으로 서버 내에사용되는 모든 동적 객체들은 이 풀시스템에 의해 관리되는 것을 지향하나 사용자가 사용 여부를 선택할 수 있습니다.


3) ICGPoolable

4) NCGPoolable<T>

5) ICGPool



둘째, 객체의 생산 관리 (Factory)

체계적인 객체의 생성이 필요할 때는 공장(Factory)가 많이 사용된다.

공장(Factory)은 모든 객체에 유일(Unique)한 일련번호를 핸들로 제공하며 이 핸들로 생성된 공장과 해당 객체의 유무와 포인터를 얻을 수 있는 체계입니다.


1) ICGFactory (CGCII 8.0에서 삭제됨)

2) ICGProductable (CGCII 8.0에서 삭제됨, ICGIdentifiable부분과 겹치는 부분이 있어 그쪽으로 이관하며 삭제)

3) ICGBuidable


생성의 과정을 정의하고 생성 초기화하고 소멸시키는 과정을 정의하는 체계가 필요합니다.

이것을 CGCII에서는 Init-Open-Close-Destroy의 4단계로 나뉘어 통합처리 되어 있으며 해당 인터페이스를 제공합니다.


4) ICGDestroyable

5) ICGInitializable

6) ICGClosable

7) ICGOpenable

또 초기화 과정에는 객체에 따라 다양한  파라메터들이 필요합니다.
이를 위해서 계층적 객체 초기화 및 '통합 객체 초기화 시스템'를 제공합니다.



셋째, 생성된 객체에 대한 관리 (Object Manager)

생성된 객체들을 객체를 검색하거나 확인을 위한 인터페이스

1) ICGNameable

2) ICGObjectIdentifiable

객체끼리 계층구조를 이루는 인터페이스
3) ICGAttachable<T>

업데이트하거나 메시지를 주고 받는 인터페이스
4) ICGMessageable
5) ICGDispatchable
6) ICGUpdatable

Reflection으로 속성정보를 얻거나 Automation처리
7) ICGDynamic
 


ObjectClasses.PNG