【发布时间】:2012-02-22 01:40:50
【问题描述】:
我有一个可以被多个线程访问的 HashTable。例如让我们看三个线程:
线程 A 做 Hash.Insert("a",new object());
线程 B 做 Hash.Insert("b",new object());
线程 C 做 Hash.Insert("a",new object());
由于某些原因,我不能对整个哈希使用锁定
我不关心顺序或在流程结束时哪个对象将位于散列中。我唯一关心的是不会因为从不同线程更新同一个单元格而导致数据损坏。
我有哪些选择?或者这不是问题,HashTable 自己处理并保持数据完整。
【问题讨论】:
-
“由于某些原因,我不能在整个哈希上使用锁” 你能解释一下这个要求吗?只是性能吗?
-
@CodeInChaos 可能同时有数千个请求,所以我更担心饥饿,因为它可能获得锁的线程永远不会获得处理器时间......
-
由于锁的非 FIFO 处理,您极不可能遇到饥饿。见stackoverflow.com/questions/961869/…。用于保证 FIFO 排序的同步对象,这将防止饥饿。
标签: .net multithreading concurrency hashtable