【发布时间】:2011-06-09 09:35:06
【问题描述】:
在本声明的上下文中,
字典可以支持 多个阅读器同时进行,只要 因为集合没有被修改。 即便如此,通过枚举 集合本质上不是 线程安全的过程。在罕见的 枚举争辩的情况 具有写访问权限的集合 必须在整个过程中锁定 枚举。允许集合 被多个线程访问 阅读和写作,你必须 实现您自己的同步。
读写是什么意思?我的理解是,读取是一种查找键并提供对其值的引用的操作,而写入是一种从字典中添加或删除键值对的操作。但是,我找不到任何关于此的结论。
所以最大的问题是,在实现线程安全字典时,更新字典中现有键的值的操作会被视为读取器还是写入器?我计划让多个线程访问字典中的唯一键并修改它们的值,但线程不会添加/删除新键。
假设修改现有值不是对字典的写操作,显而易见的含义是我的线程安全字典的实现可以更有效,因为我不需要每次都获得排他锁尝试将值更新为现有键。
.Net 4.0 中的 ConcurrentDictionary 的使用不是一个选项。
【问题讨论】:
标签: c# dictionary thread-safety