遍历 ConcurrentDictionary 并修改集合
本文关键字:集合 修改 ConcurrentDictionary 遍历 | 更新日期: 2023-09-27 18:27:29
遍
历ConcurrentDictionary集合并删除某些条目的正确方法是什么?
据我了解,ConcurrentDictionary 在单元格的某个级别上实现了锁定,对我来说,遍历整个集合并通过某些条件删除不相关的数据很重要。我担心通过我的迭代,其他线程会添加应该在我的迭代器之后过滤的数据。
那么我如何使用并发词典来实现这一点,或者应该在该集合的每次触摸上使用带有锁定机制的普通词典。
谢谢。
ConcurrentDictionary
的主要优点是它对读取线程没有锁定,这通常是你使用它的原因;如果你不需要这个优势,那么你可以使用带锁的字典。
始终可以确保将筛选条件传递给筛选器迭代开始后发生的任何添加。
否则,如果非阻塞读取比偶尔不一致的条目更重要,则可以重复筛选器,直到它不再找到无效项目。
当然,您无法保证,当您在不锁定字典的情况下迭代它时,不会将任何条目添加到ConcurrentDictionary
中。但是,如果进行锁定,则无需使用ConcurrentDictionary
,请改用Dictionary
。
顺便说一句,为什么在没有"坏"条目的情况下结束迭代对您很重要? 释放锁后的下一刻,它可以填充其中任何一个。也许最好不要让不需要的条目出现在字典中?