ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • boost singleton_pool의 사용
    프로그래밍 2014. 4. 20. 01:02
    반응형

    boost의 메모리 풀 관련 라이브러리 중 하나인 boost::singleton_pool은 


    전역적인 메모리 풀로 스레드에 대해 안전(thread-safe)하다.


    사용 시, 템플릿 인자로 태그(tag)의 역할을 할 더미 클래스와 pool이 할당하는 사이즈를 받는다.

    똑같은 용량을 할당하는 메모리 풀이라도, 태그가 다르면 공유하지 않는 메모리 풀을 사용한다. 

    (태그의 이름을 변수 이름이라고 생각해도 괜찮다.)


    메모리 블럭은 서로 링크된 리스트(linked list)로 연결되어 있으며 새로운 메모리 블럭의 생성 시,

    이전 사이즈보다 2배 커진 메모리 블럭을 생성하기 때문에 초기 메모리 블럭의 크기(arg4)와 메모리 블럭의 최대 크기(arg5)를 템플릿 인자로 받는다.


    싱글톤 풀은 다음과 같이 인스턴스화 될 수 없다.

    같은 사이즈의 메모리를 할당하지만 완전히 다른 메모리 공간을 사용하고자 할 경우가 있을 수 있기 때문에 풀 태그(pool tag)를 둔 것이다.
    (그래서 풀 태그를 변수의 이름이라고 생각해도 된다고 하였다.)


    singleton_pool<tag, size>::malloc() // size만큼의 메모리 할당


    singleton_pool<tag, size>::free() // 메모리 해제



    반응형
Designed by Tistory.