gpt4 book ai didi

c# - ConcurrentBag 与 List

转载 作者:IT王子 更新时间:2023-10-29 04:32:15 27 4
gpt4 key购买 nike

与仅使用 List(Of MyType) 相比,使用 ConcurrentBag(Of MyType) 有什么优势? The MSDN page on the CB指出

ConcurrentBag(Of T) is a thread-safe bag implementation, optimized for scenarios where the same thread will be both producing and consuming data stored in the bag

那么有什么优势呢?我可以理解 Concurrency 命名空间中其他集合类型的优势,但这个让我感到困惑。

最佳答案

在内部,ConcurrentBag 是使用多个不同的列表实现的,每个列表对应一个写入线程。

你引用的那句话的意思是,当从包中读取时,它将优先考虑为该线程创建的列表。这意味着,它会先检查该线程的列表,然后再冒着争用另一个线程列表的风险。

这样它可以在多个线程同时读写时最大限度地减少锁争用。当读取线程没有列表,或者其列表为空时,它必须锁定分配给不同线程的列表。但是,如果您有多个线程都在读取和写入它们自己的列表,那么您将永远不会发生锁争用。

关于c# - ConcurrentBag<MyType> 与 List<MyType>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2950955/

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