gpt4 book ai didi

.net - 为什么 ConcurrentQueue 没有容量?

转载 作者:行者123 更新时间:2023-12-04 10:24:36 26 4
gpt4 key购买 nike

为什么不ConcurrentQueue有一个 capacity喜欢它的非并发表亲?
也没有提到默认容量。

与非并发版本相比,“缺失”容量是否会影响性能,在非并发版本中,实现者可以提供对队列典型大小的合格猜测?

最佳答案

ConcurrentQueue 是使用无锁技术实现的。它基于“链表”。链接列表中的容量没有意义,因此它不会公开容量。

将元素添加到 LinkedList 非常便宜,它不需要调整数组的大小。它只是修改尾部指针(引用)。如果实现使用数组,则调整数组大小的代价很高,因此当您将许多元素排入队列时,预先分配数组将显着提高性能。
Queue 的其他非并发实现( System.Collections.Generic.Queue<T>System.Collections.Queue )是基于数组的。因此,预先分配具有给定容量的数组以避免经常调整数组大小是有意义的,因此它公开了容量属性。

关于.net - 为什么 ConcurrentQueue 没有容量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30047224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com