ArrayPool的利用

时间:2019-08-29 21:33:00

标签: c# .net-core

我了解到ArrayPool类仅用于池阵列。

我可以使用ArrayPool实现来池化对象(不是数组)吗?我不明白为什么不这样做,除了它返回的数组可能比我要求的大一点有点奇怪。

我在想这样的事情:

public class Worker
{
    ArrayPool<Channel> channels;

    public Worker() 
    {
        channels = ArrayPool<Channel>.Shared;
    }

    public async Task ExecuteSomething(string message)
    {
        // It gets a bit weird here...
        var rentedChannels = channels.Rent(1);
        await rentedChannels[0].DoWork();
        channels.Return(rentedChannels);
    }
}

为方便起见,here是实现ArrayPool<T>的链接。

1 个答案:

答案 0 :(得分:0)

您似乎正在寻找的也许是ObjectPool<T>

查看示例 https://docs.microsoft.com/en-us/aspnet/core/performance/objectpool?view=aspnetcore-3.0

希望有帮助!