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 T | Claim () |
| Claim a object.
|
|
static void | Clear () |
| Clears the pool for objects of this type.
|
|
static int | GetSize () |
| Number of objects of this type in the pool.
|
|
static void | Release (ref T obj) |
| Releases an object.
|
|
|
static readonly HashSet< T > | inPool = new HashSet<T>() |
|
static List< T > | pool = new List<T>() |
| Internal pool.
|
|
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).
Clears the pool for objects of this type.
This is an O(n) operation, where n is the number of pooled objects.
Number of objects of this type in the pool.
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
readonly HashSet<T> inPool = new HashSet<T>() |
|
staticprivate |
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