【发布时间】:2011-02-21 19:46:07
【问题描述】:
是否有实现 IList 的无锁且线程安全的数据结构?
当然,无锁是指一种实现,它不使用 .NET 中的锁定原语,而是使用互锁操作/原子操作来实现线程安全...... 没有,显然是在并发数据结构下...
有没有人看到一个漂浮的?
我见过在amino-cbbs 中实现的java,称为LockFreeVector,但到目前为止还没有用于.NET。 有什么想法吗?
【问题讨论】:
-
我想你的意思是“无锁”和线程安全,因为
List<T>是完全无锁的。您还应该澄清“无锁”的含义。 -
@damageboy 另一个注意事项:他们(氨基)正在实现一个 LINKED 列表,而不是一个列表。 C# 中的 LinkedList 不实现 IList/IList
。他们有一个 LockFreeVector ......但我不认为它是“完全”无锁的。 -
您要寻找的实现有多“完整”?我非常怀疑您是否能够找到,例如,一种支持随机
Insert而没有锁定的类型(除非您允许 spinning,我猜,因为这与“锁定”)。但是,我知道什么? -
@xantos:我指的是氨基的 LockFreeVector
:amino-cbbs.sourceforge.net/java_apidocs/org/amino/ds/lockfree/… -
@damageboy:请注意,
LockFreeVector<E>所基于的论文中描述的无锁结构 not 具有随机的Insert操作(这是IList<T>接口)。
标签: .net multithreading structure ilist lock-free