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&lt;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 积分,解读结果公开显示在下面。

还没有人解读过这个文件。