BloombergLP::bdlma::ConcurrentPoolAllocator::ConcurrentPoolAllocator

Constructors

Synopses

Declared in <bdlma_concurrentpoolallocator.h>

Create a pool allocator that returns blocks of contiguous memory of uniform size for each allocate method invocation, where the size is determined by the first invocation of allocate. Optionally specify a growthStrategy used to control the growth of internal memory chunks (from which memory blocks are dispensed). If growthStrategy is not specified, geometric growth is used. If growthStrategy is specified, optionally specify a maxBlocksPerChunk, indicating the maximum number of blocks to be allocated at once when the underlying pool must be replenished. If maxBlocksPerChunk is not specified, an implementation-defined value is used. If geometric growth is used, the chunk size grows starting at the value returned by blockSize, doubling in size until the size is exactly blockSize() * maxBlocksPerChunk. If constant growth is used, the chunk size is always maxBlocksPerChunk. Optionally specify a basicAllocator used to supply memory. If basicAllocator is 0, the currently installed default allocator is used. The behavior is undefined unless 1 <= maxBlocksPerChunk.

explicit
ConcurrentPoolAllocator(bslma::Allocator* basicAllocator = 0);
» more...

Same as the preceding overload, with the specified growthStrategy.

explicit
ConcurrentPoolAllocator(
    bsls::BlockGrowth::Strategy growthStrategy,
    bslma::Allocator* basicAllocator = 0);
» more...

Create a pool allocator that returns blocks of contiguous memory of the specified blockSize (in bytes) for each allocate method invocation. Optionally specify a growthStrategy used to control the growth of internal memory chunks (from which memory blocks are dispensed). If growthStrategy is not specified, geometric growth is used. If blockSize and growthStrategy are specified, optionally specify a maxBlocksPerChunk, indicating the maximum number of blocks to be allocated at once when the underlying pool must be replenished. If maxBlocksPerChunk is not specified, an implementation-defined value is used. If geometric growth is used, the chunk size grows starting at blockSize, doubling in size until the size is exactly blockSize * maxBlocksPerChunk. If constant growth is used, the chunk size is always maxBlocksPerChunk. Optionally specify a basicAllocator used to supply memory. If basicAllocator is 0, the currently installed default allocator is used. The behavior is undefined unless 1 <= maxBlocksPerChunk.

explicit
ConcurrentPoolAllocator(
    size_type blockSize,
    bslma::Allocator* basicAllocator = 0);
» more...

Same as the preceding overload, with the specified maxBlocksPerChunk.

ConcurrentPoolAllocator(
    bsls::BlockGrowth::Strategy growthStrategy,
    int maxBlocksPerChunk,
    bslma::Allocator* basicAllocator = 0);
» more...

Same as the preceding overload, with the specified growthStrategy.

ConcurrentPoolAllocator(
    size_type blockSize,
    bsls::BlockGrowth::Strategy growthStrategy,
    bslma::Allocator* basicAllocator = 0);
» more...

Same as the preceding overload, with the specified maxBlocksPerChunk.

ConcurrentPoolAllocator(
    size_type blockSize,
    bsls::BlockGrowth::Strategy growthStrategy,
    int maxBlocksPerChunk,
    bslma::Allocator* basicAllocator = 0);
» more...