为什么不ConcurrentQueue具有capacity像其非并发表妹?也没有提到默认容量.
与非并发版本相比,"缺失"容量是否会影响性能,而实现者可以提供对队列典型大小的合格猜测?
Sri*_*vel 13
ConcurrentQueue使用无锁技术实现.它基于"链接列表".容量在链接列表中没有意义,因此它不会暴露容量.
向LinkedList添加元素非常便宜,不需要调整数组大小.它只是修改Tail指针(引用).如果实现使用数组,那么调整数组的大小是很昂贵的,因此预先分配数组会在排队许多元素时显着提高性能.
Queue(System.Collections.Generic.Queue<T>和System.Collections.Queue)的其他非并发实现是基于数组的.因此,预先分配具有给定容量的数组是有意义的,以避免经常调整数组的大小,从而暴露出Capacity属性.