Show / Hide Table of Contents

Class ObjectPool<T>

Generic object pool implementation.

Inheritance
System.Object
ObjectPool<T>
ComponentPool<T>
DefaultPool<T>
PrefabPool
Inherited Members
System.Object.Equals(System.Object)
System.Object.Equals(System.Object, System.Object)
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()
System.Object.ToString()
System.Object.ReferenceEquals(System.Object, System.Object)
Namespace: StansAssets.Foundation.Patterns
Assembly: cs.temp.dll.dll
Syntax
public class ObjectPool<T>
    where T : class
Type Parameters
Name Description
T

Type of the object pool.

Constructors

ObjectPool(Func<T>, Action<T>, Action<T>, Boolean, Boolean, Int32, UInt32)

Creates a new ObjectPool.

Declaration
public ObjectPool(Func<T> actionCreate, Action<T> actionOnGet = null, Action<T> actionOnRelease = null, bool concurrent = false, bool collectionCheck = true, int defaultCapacity = -1, uint maxSize = 10000U)
Parameters
Type Name Description
System.Func<T> actionCreate

Use to create a new instance when the pool is empty. In most cases this will just be

() => new T()

System.Action<T> actionOnGet

Called when the instance is being taken from the pool.

System.Action<T> actionOnRelease

Called when the instance is being returned to the pool. This could be used to clean up or disable the instance.

System.Boolean concurrent

When set to true enables thread-safe implementation variant. The default value is false.

System.Boolean collectionCheck

Collection checks are performed when an instance is returned back to the pool. An exception will be thrown if the instance is already in the pool. Collection checks are only performed in the Editor.

System.Int32 defaultCapacity

The default capacity the stack will be created with.

System.UInt32 maxSize

The maximum size of the pool. When the pool reaches the max size then any further instances returned to the pool will be ignored and can be garbage collected. This can be used to prevent the pool growing to a very large size.

Properties

CountActive

Number of objects that have been created by the pool but are currently in use and have not yet been returned.

Declaration
public int CountActive { get; }
Property Value
Type Description
System.Int32

CountAll

The total number of active and inactive objects.

Declaration
public int CountAll { get; }
Property Value
Type Description
System.Int32

CountInactive

Number of objects that are currently available in the pool.

Declaration
public int CountInactive { get; }
Property Value
Type Description
System.Int32

Methods

Clear()

Releases all pooled objects so they can be garbage collected.

Declaration
public void Clear()

Get()

Get an object from the pool.

Declaration
public T Get()
Returns
Type Description
T

A new object from the pool.

Get(out T)

Get a new ObjectPool<T>.PooledObject which can be used to return the instance back to the pool when the PooledObject is disposed.

Declaration
public ObjectPool<T>.PooledObject Get(out T v)
Parameters
Type Name Description
T v

Output new typed object.

Returns
Type Description
ObjectPool.PooledObject<>

New PooledObject

PreWarm(Int32)

Fills instance with

Declaration
public void PreWarm(int count)
Parameters
Type Name Description
System.Int32 count

Release(T)

Release an object to the pool.

Declaration
public void Release(T element)
Parameters
Type Name Description
T element

Object to release.

TryGet(Predicate<T>, out T)

Try to get an object in the pool.

Declaration
public bool TryGet(Predicate<T> pred, out T result)
Parameters
Type Name Description
System.Predicate<T> pred

Search predicate.

T result

An existing object from the pool or null if the object is not found.

Returns
Type Description
System.Boolean

true if an appropriate object is found, false otherwise.

In This Article
Back to top Generated by DocFX