# Object Pool Implementation

## 依存性

Boost ヘッダー "pool.hpp"(pool.html を見よ)をインクルードしている。

## 公開インタフェースの拡張

ObjectPool 型のオブジェクトがシステムからメモリーを必要とするときはいつでも、それのテンプレートパラメーター UserAllocator がシステムへ要求を出す。 リクエストされる量はダブリングアルゴリズムによって決定される。 言い換えると、より多くのシステムメモリーが割り当てられるとき、要求される量は2倍になるということである。 ユーザーは以下に述べる拡張によってダブリングアルゴリズムを管理することができる。

### 追加のコンストラクタパラメータ

ユーザーは ObjectPool のコンストラクタに追加のパラメータを渡すことができる。 このパラメータは size_type 型で、そのオブジェクトがシステムメモリーを初めて必要とするときに要求するチャンクの数である。 デフォルト値は 32 である。このパラメーターは 0 であってはならない。

### next_sizeアクセサ関数

関数size_type get_next_size() const; と void set_next_size(size_type);のペアはユーザーに明示的なnext_sizeの読み書きを許す。 この値はオブジェクトが次にシステムメモリーから割り当てを必要とするときに要求するチャンクの数である。 この値を 0 に設定してはならない。

## Protected インタフェース

### 梗概

    template <typename ElementType, typename UserAllocator = default_user_allocator_new_delete>
    class object_pool: protected pool<UserAllocator>
    {
      ... // public interface
    };

### Protected Derivation

ObjectPool は protected 導出を使って単純分離記憶域から導出されている。 これは Pool 実装の詳細のすべてを、ObjectPool から導出されるすべてのクラスにも同じように開示している。

## インタフェースの説明

Copyright © 2000, 2001 Stephen Cleary (shammah@voyager.net)

This file can be redistributed and/or modified under the terms found in copyright.html

This software and its documentation is provided "as is" without express or implied warranty, and with no claim as to its suitability for any purpose.