Lightweight object Pool.
More...
Lightweight object Pool.
Handy class for pooling objects of type T.
Usage:
- Claim a new object using
SomeClass foo = ObjectPool<SomeClass>.Claim ();
- Use it and do stuff with it
- Release it with
ObjectPool<SomeClass>.Release (foo);
After you have released a object, you should never use it again.
- Since
- Version 3.2
- Version
- Since 3.7.6 this class is thread safe
- See also
- Pathfinding.Util.ListPool
-
ObjectPool
|
static readonly HashSet< T > | inPool = new HashSet<T>() |
|
static List< T > | pool = new List<T>() |
| Internal pool. More...
|
|
◆ Claim()
Claim a object.
Returns a pooled object if any are in the pool. Otherwise it creates a new one. After usage, this object should be released using the Release function (though not strictly necessary).
◆ Clear()
Clears the pool for objects of this type.
This is an O(n) operation, where n is the number of pooled objects.
◆ GetSize()
Number of objects of this type in the pool.
◆ Release()
static void Release |
( |
ref T |
obj | ) |
|
|
static |
Releases an object.
After the object has been released it should not be used anymore. The variable will be set to null to prevent silly mistakes.
- Exceptions
-
System.InvalidOperationException | Releasing an object when it has already been released will cause an exception to be thrown. However enabling ASTAR_OPTIMIZE_POOLING will prevent this check. |
- See also
- Claim
◆ inPool
readonly HashSet<T> inPool = new HashSet<T>() |
|
staticprivate |
◆ pool
List<T> pool = new List<T>() |
|
staticprivate |
The documentation for this class was generated from the following file:
- /Users/arong/Unity/a-pathfinding-project/Assets/AstarPathfindingProject/Core/Misc/ObjectPool.cs