std::pmr::synchronized_pool_resource
From 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 を構築します。(public member function) | |
| [virtual] |
synchronized_pool_resource を破棄し、確保されたすべてのメモリを解放します。(virtual public member function) |
| operator= [削除] |
コピー代入演算子は削除されています。synchronized_pool_resource はコピー代入可能ではありません。(public member function) |
公開メンバ関数 | |
| 確保されたすべてのメモリを解放します。 (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) |