gpt4 book ai didi

.net-4.0 - ConcurrentBag 的实际用途是什么?

转载 作者:行者123 更新时间:2023-12-03 14:48:28 33 4
gpt4 key购买 nike

ConcurrentBag 将允许多个线程从包中添加和删除项目。一个线程可能会将一个项目添加到包中,然后最终将相同的项目取出。它说 ConcurrentBag 是无序的,但它有多无序?在单个线程上,包就像一个堆栈。无序是否意味着“不像链表”?

ConcurrentBag 的实际用途是什么?

最佳答案

因为没有排序,ConcurrentBag 比 ConcurrentStack/Queue 具有性能优势。它由 Microsoft 实现为本地线程存储。因此,每个添加项目的线程都在其自己的空间中执行此操作。检索项目时,它们来自本地存储。只有当它为空时,线程才会从另一个线程存储中窃取项目。因此,ConcurrentBag 不是一个简单的列表,而是一个分布式的项目列表。并且几乎是无锁的,应该在高并发下更好地扩展。

不幸的是,在 .NET 4.0 中存在性能问题(在 4.5 中已修复),请参阅
http://ayende.com/blog/156097/the-high-cost-of-concurrentbag-in-net-4-0

关于.net-4.0 - ConcurrentBag<T> 的实际用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6447290/

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