unsynchronized_pool_resource — std::pmr::unsynchronized_pool_resource

unsynchronized_pool_resource — std::pmr::unsynchronized_pool_resource

std::pmr::unsynchronized_pool_resource는 범용 목적 메모리 자원 클래스로, 다양한 블록 크기의 요청을 처리하는 풀(pool)들의 집합으로 동작해요. <memory_resource> 헤더에 제공돼요. 스레드 동기화 없이 단일 스레드에서 고속 할당을 제공해요.

memory_resource의 일부로, 블록 크기별 풀을 관리해서 작은 할당을 빠르게 처리하는 것이 목적이에요.

출처: cppreference

본문

std::pmr::unsynchronized_pool_resource는 다음 속성을 가진 범용 목적 메모리 자원 클래스예요.

class unsynchronized_pool_resource : public std::pmr::memory_resource;
  • 할당된 메모리를 소유하며, 일부 블록에 deallocate가 호출되지 않았더라도 파괴 시 해제해요.
  • 서로 다른 블록 크기의 요청을 처리하는 **풀(pool)**들의 집합으로 구성돼요. 각 풀은 균일한 크기의 블록으로 나뉘는 **청크(chunk)**들의 집합을 관리해요.
  • do_allocate 호출은 요청 크기를 수용하는 가장 작은 블록을 서빙하는 풀로 디스패치돼요.
  • 풀의 메모리가 소진되면, 그 풀에 대한 다음 할당 요청이 업스트림 할당자에서 추가 청크를 할당해 풀을 보충해요. 얻는 청크 크기는 기하급수적으로 증가해요.
  • 가장 큰 블록 크기를 초과하는 할당 요청은 업스트림 할당자에서 직접 처리돼요.
  • 가장 큰 블록 크기와 최대 청크 크기는 생성자에 std::pmr::pool_options 구조체를 전달해 조정할 수 있어요.

이 자원은 스레드 동기화를 수행하지 않으므로, 단일 스레드에서 사용해야 해요. 여러 스레드에서 동시에 자원을 공유해야 한다면 synchronized_pool_resource를 사용해야 해요.

같이 보기

  • std::pmr::synchronized_pool_resource
  • std::pmr::pool_options
  • std::pmr::memory_resource

더 알아보기 (Learn more)

cppreference