std::experimental::pmr::synchronized_pool_resource
From cppreference.com
< cpp | experimental
| ヘッダー <experimental/memory_resource> で定義 |
||
| class synchronized_pool_resource : public memory_resource; |
(Library Fundamentals TS) | |
クラス std::experimental::pmr::synchronized_pool_resource は、以下の特性を持つ汎用メモリリソースクラスです。
- 確保されたメモリを所有し、デストラクタで解放します。これは、確保されたブロックの一部に対して
deallocateが呼び出されなかった場合でも同様です。 - 異なるブロックサイズの要求に応えるための プール のコレクションで構成されます。各プールは、均一なサイズのブロックに分割される チャンク のコレクションを管理します。
do_allocateへの呼び出しは、要求されたサイズを収容する最小のブロックを提供するプールにディスパッチされます。- プール内のメモリが枯渇すると、そのプールに対する次の確保要求は、プールを補充するためにアップストリームアロケータから追加のメモリチャンクを確保します。取得されるチャンクサイズは幾何級数的に増加します。
- 最大のブロックサイズを超える確保要求は、アップストリームアロケータから直接処理されます。
- 最大ブロックサイズと最大チャンクサイズは、コンストラクタに 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= [削除] |
コピー代入演算子は削除されています。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) |