6.1.6. scalar_allocation_policy::pool

6.1.6.1. scalar_allocation_policy::pool用要求ポリシー
6.1.6.2. scalar_allocation_policy::pool用開放ポリシー
ヘッダファイル
bezel/scalar_allocation_policy/pool.h
フロントエンドのクラステンプレート名
bezel::scalar_allocation_policy::pool
フロントエンドのテンプレートパラメータ数
3

scalar_allocation_policy::poolは、下位のスカラー割り当てポリシーが割り当てた記憶領域を必要に応じて蓄積するプロキシポリシーである。フロントエンドの第1テンプレートパラメータに下位の割り当てポリシーを、第2テンプレートパラメータに要求ポリシーを、第3テンプレートパラメータに開放ポリシーを指定する。

scalar_allocation_policy::poolは、使用者から記憶領域の割り当て要求を受けると、下位の割り当てポリシーに記憶領域の割り当てを要求する。この際、要求ポリシーの設定に応じて必要数以上の記憶領域をまとめて確保し、ポリシーオブジェクト内に蓄積しておく。使用者から続く記憶領域割り当て要求があったとき、ポリシーオブジェクト内に充分な記憶領域の蓄積があれば、下位の割り当てポリシーを用いずに蓄積していた記憶領域を用いて使用者の要求に応える。また、記憶領域が使用者から返却されたとき、開放ポリシーの設定に応じて下位の割り当てポリシーに余分な蓄積をまとめて返却する。

allocateは下位の割り当てポリシーから新たに確保される記憶領域数に対する線形時間で、deallocateは下位の割り当てポリシーへと返却される記憶領域数に対する線形時間で行われる。処理が蓄積した資源で完結する場合は定数時間で行われる。