ArrayPool <t> .Rent(Int32)方法是线程安全的吗?

时间:2018-11-13 03:15:58

标签: c# .net-core thread-safety

我刚刚发现ArrayPool的存在,但是它的文档有些缺乏。

我想知道Rent(.)Return(.)是否是线程安全的。

编辑:看来我没有注意到文档的“线程安全”部分;但是读了一些评论和答案后,我才松了一口气,我不是唯一一个没有这么做的人。

2 个答案:

答案 0 :(得分:5)

更新ta.speot.is中的评论

  

字面上说   Thread safety这   该类是线程安全的。所有成员可能被多个线程使用   同时

原始

在docs.microsoft.com上没有说明,但是实际上有一些引用。

Add a new System.Buffers namespace to the BCL for Resource Pooling

  

游泳池将是轻量级且线程安全的,可实现快速租用   并从流程中的任何线程返回调用,以及   最小的锁定开销,并且大多数Rent调用的堆分配为0   (以下例外情况将在   租金功能)。

Pooling large arrays with ArrayPool

  

推荐:使用ArrayPool.Shared属性,该属性返回一个   共享池实例。 线程安全,您需要记住的是   它具有默认的最大数组长度,等于2 ^ 20(1024 * 1024 = 1   048 576)。

答案 1 :(得分:1)

  

缺少文档。

You can read about thread safety under Thread Safety

  

线程安全

     

此类是线程安全的。所有成员可能同时被多个线程使用。