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

Tra*_*uer 8 c# thread-safety .net-core

我刚刚发现ArrayPool存在,但它的文档有点缺乏.

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

编辑:看起来我没有注意到文档的"线程安全"部分; 但阅读一些评论和答案后,我感到宽慰,我不是唯一没有这样做的人.

AAA*_*ddd 8

更新来自ta.speot.is的评论

字面意思是 线程安全这个类是线程安全的.所有成员可以同时由多个线程使用

原版的

它没有在docs.microsoft.com上说出来,但是有一些引用它的事实

将新的System.Buffers命名空间添加到BCL以进行资源池

Pool将是轻量级和线程安全的,允许从进程内的任何线程进行快速的Rent和Return调用,以及最小的锁定开销,以及大多数Rent调用的0堆分配(对此的例外将在下面的描述中调用租金功能).

使用ArrayPool池化大型数组

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

.

  • *在docs.microsoft.com上没有说明*在https://docs.microsoft.com/zh-cn/dotnet/api/system.buffers.arraypool-1上字面上说*此类是线程安全的。所有成员可能同时被多个线程使用。* (2认同)
  • @ ta.speot。已更新并归因于 (2认同)