src/DotNetCommon.Core/EasyPool.cs
(开头部分) 5KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
namespace DotNetCommon
{
using System;
using System.Collections.Concurrent;
/// <summary>
/// 一个通用的线程安全的对象池定义
/// </summary>
/// <example>
/// <para>示例代码: </para>
/// <code>
/// public class Program
/// {
/// public static void Main(string[] args)
/// {
/// //配置并创建对象池
/// var pool = new EasyPool<Person>(
/// () => new Person(),//Person实例创建方法
/// person => person.Init(),//对象池回收Person执行的逻辑
/// 10//池中最大的数量
/// );
///
/// //从对象池中取一个person实例
/// var person=pool.Rent();
/// //do something
/// //将person实例归还到对象池中
/// pool.Return(person);
/// }
/// }
/// </code>
/// </example>
/// <remarks>
/// 微软的扩展包里已提供了这项功能,但仅支持netstandard2.0:
/// <code><PackageReference Include="Microsoft.Extensions.ObjectPool" Version="3.1.8" /></code>
/// </remarks>
/// <typeparam name="T">对象池中存放的对象</typeparam>
public interface IEasyPool<T> : IDisposable where T : class
{
/// <summary>
/// 当前池中的模型数量
/// </summary>
int Count { get; }
/// <summary>
/// 从对象池中获取模型
/// </summary>
T Get();
/// <summary>
/// 将模型归还到对象池中(可指定是否需要执行预设的重置逻辑)
/// </summary>
/// <param name="item">要规划的模型</param>
/// <param name="reset">
/// 是否需要执行预设的重置逻辑
/// </param>
/// <returns>归还成功返回True,负责返回False(比如:池中的模型数量已达最大值)</returns>
bool Return(T item, bool reset = true);
}
后面还有 97 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
