mirror of https://github.com/ogoun/Zero.git
				
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							33 lines
						
					
					
						
							1.0 KiB
						
					
					
				
			
		
		
	
	
							33 lines
						
					
					
						
							1.0 KiB
						
					
					
				| /*https://github.com/dotnet/aspnetcore/blob/main/src/ObjectPool*/
 | |
| 
 | |
| namespace MemoryPools
 | |
| {    
 | |
|     public abstract class ObjectPool<T> where T : class
 | |
|     {
 | |
|         /// <summary>
 | |
|         /// Gets an object from the pool if one is available, otherwise creates one.
 | |
|         /// </summary>
 | |
|         /// <returns>A <typeparamref name="T"/>.</returns>
 | |
|         public abstract T Get();
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Return an object to the pool.
 | |
|         /// </summary>
 | |
|         /// <param name="obj">The object to add to the pool.</param>
 | |
|         public abstract void Return(T obj);
 | |
|     }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// Methods for creating <see cref="ObjectPool{T}"/> instances.
 | |
|     /// </summary>
 | |
|     public static class ObjectPool
 | |
|     {
 | |
|         /// <inheritdoc />
 | |
|         public static ObjectPool<T> Create<T>(IPooledObjectPolicy<T>? policy = null) where T : class, new()
 | |
|         {
 | |
|             var provider = new DefaultObjectPoolProvider();
 | |
|             return provider.Create(policy ?? new DefaultPooledObjectPolicy<T>());
 | |
|         }
 | |
|     }
 | |
| }
 |