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_resourcestd::pmr::pool_optionsstd::pmr::memory_resource