std::pmr::synchronized_pool_resource
提供: cppreference.com
ヘッダ <memory_resource> で定義
|
||
class synchronized_pool_resource : public std::pmr::memory_resource; |
(C++17以上) | |
クラス std::pmr::synchronized_pool_resource
は以下の性質を持つ汎用のメモリリソースクラスです。
- 確保されたメモリを所有し、たとえ確保されたブロックのいくつかに対して
deallocate
が呼ばれなくても、破棄時にそれを解放します。 - 異なるブロックサイズに対する要求に応えるプールのコレクションから構成されます。 各プールは一様なサイズのブロックに分割されたチャンクのコレクションを管理します。
- do_allocate の呼び出しはその要求されたサイズを収容できる最小のブロックを供���するプールにディスパッチされます。
- プール内のメモリを使い果たすとそのプールに対する次の確保要求はプールを再充填するために上流アロケータからの追加のメモリチャンクの確保を発生させます。 取得するチャンクのサイズは等比で増加します。
- 最大ブロックサイズを超える確保要求は上流アロケータから直接供給されます。
- 最大ブロックサイズおよび最大チャンクサイズはコンストラクタに std::pmr::pool_options 構造体を渡すことによってチューニングできます。
synchronized_pool_resource
は外部の同期なしに複数のスレッドからアクセスできます。 同期のコストを減らすためにスレッド固有のプールを持つこともあります。 メモリリソースがひとつのスレッドからのみアクセスされる場��は、 unsynchronized_pool_resource の方が効率的です。
[編集] メンバ関数
synchronized_pool_resource を構築します (パブリックメンバ関数) | |
[仮想] |
synchronized_pool_resource を破棄し、確保されたメモリをすべて解放します (仮想パブリックメンバ関数) |
operator= [削除] |
コピー代入演算子は削除されています。 synchronized_pool_resource はコピー代入可能ではありません (パブリックメンバ関数) |
パブリックメンバ関数 | |
確保されたメモリをすべて解放します (パブリックメンバ関数) | |
上流メモリリソースを指すポインタを返します (パブリックメンバ関数) | |
このリソースのプール処理の動作を制御するオプションを返します (パブリックメンバ関数) | |
プロテクテッドメンバ関数 | |
[仮想] |
メモリを確保します (仮想プロテクテッドメンバ関数) |
[仮想] |
メモリをプールに返却します (仮想プロテクテッドメンバ関数) |
[仮想] |
別の memory_resource と等しいかどうか比較します (仮想プロテクテッドメンバ関数) |