std::experimental::pmr:: synchronized_pool_resource
From cppreference.net
<
cpp
|
experimental
|
헤더 파일에 정의됨
<experimental/memory_resource>
|
||
|
class
synchronized_pool_resource
:
public
memory_resource
;
|
(라이브러리 fundamentals TS) | |
클래스
std::experimental::pmr::synchronized_pool_resource
는 다음과 같은 속성을 가진 범용 메모리 리소스 클래스입니다:
-
할당된 메모리를 소유하며, 일부 할당된 블록에 대해
deallocate가 호출되지 않았더라도 소멸 시 메모리를 해제합니다. - 서로 다른 블록 크기에 대한 요청을 처리하는 풀(pool) 컬렉션으로 구성됩니다. 각 풀은 균일한 크기의 블록으로 분할되는 청크(chunk) 컬렉션을 관리합니다.
- do_allocate 호출은 요청된 크기를 수용할 수 있는 가장 작은 블록을 제공하는 풀로 전달됩니다.
- 풀의 메모리가 고갈되면 해당 풀에 대한 다음 할당 요청이 업스트림 할당자(upstream allocator) 로부터 추가 청크 메모리를 할당하여 풀을 보충합니다. 획득하는 청크 크기는 기하급수적으로 증가합니다.
- 가장 큰 블록 크기를 초과하는 할당 요청은 업스트림 할당자(upstream allocator) 로부터 직접 제공됩니다.
- 최대 블록 크기와 최대 청크 크기는 생성자에 std::experimental::pmr::pool_options 구조체를 전달하여 조정할 수 있습니다.
synchronized_pool_resource
는 외부 동기화 없이 여러 스레드에서 접근할 수 있으며, 동기화 비용을 줄이기 위해 스레드별 풀을 가질 수 있습니다. 메모리 리소스가 단일 스레드에서만 접근되는 경우,
unsynchronized_pool_resource
가 더 효율적입니다.
멤버 함수
synchronized_pool_resource
를 생성합니다
(public member function) |
|
|
[virtual]
|
synchronized_pool_resource
를 파괴하고 모든 할당된 메모리를 해제합니다
(virtual public member function) |
|
operator=
[deleted]
|
복사 할당 연산자가 삭제됨.
synchronized_pool_resource
는 복사 할당이 불가능합니다
(public member function) |
Public member functions |
|
|
모든 할당된 메모리를 해제합니다
(public member function) |
|
|
상위 메모리 리소스에 대한 포인터를 반환합니다
(public member function) |
|
|
이 리소스의 풀링 동작을 제어하는 옵션들을 반환합니다
(public member function) |
|
Protected member functions |
|
|
[virtual]
|
메모리를 할당합니다
(virtual protected member function) |
|
[virtual]
|
메모리를 풀로 반환합니다
(virtual protected member function) |
|
[virtual]
|
다른
memory_resource
와 동등성을 비교합니다
(virtual protected member function) |