gpt4 book ai didi

c# - 等待所有线程完成写入 ConcurrentDictionary

转载 作者:行者123 更新时间:2023-11-30 18:46:16 25 4
gpt4 key购买 nike

有一个并发字典,它从不同的来源收集信息,每分钟刷新一次并将收集的数据传递给另一个处理程序。

var currentDictionarySnapshot = _currentDictionary;
_currentDictionary = new ConcurrentDictionary<int, string>();
return new ReadOnlyDictionary<int, string>(currentDictionarySnapshot);

我需要的是让 currentDictionarySnapshot 等待所有对其有引用的线程完成写入并在之后创建新的 ReadOnlyDictionaryConcurrentDictionary 本身是否支持它?如果不支持,我该如何提供?

最佳答案

从概念上讲,您似乎需要一个 ReaderWriterLockSlim。 “读者”将是写入字典的线程。 “作者”是复制字典的线程。

请注意,内置的 RWL 无法缩放。它们只是为每个操作在内部锁定一些数据结构。这破坏了 ConcurrentDictionary 的可伸缩性属性,它通过锁 strip 化进行缩放。

关于c# - 等待所有线程完成写入 ConcurrentDictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28624973/

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