我刚刚发现ArrayPool的存在,但是它的文档有些缺乏。
我想知道Rent(.)和Return(.)是否是线程安全的。
编辑:看来我没有注意到文档的“线程安全”部分;但是读了一些评论和答案后,我才松了一口气,我不是唯一一个没有这么做的人。
答案 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)