是否有实现 IList 的无锁且线程安全的数据结构?
当然,无锁是指不使用 .NET 中的锁定原语而是使用互锁操作/原子操作来实现线程安全的实现...
显然在并发数据结构下没有一个......
有人见过漂浮在空中的吗?
我见过一个java实现氨基-CBBs http://amino-cbbs.sourceforge.net/,称为锁自由矢量 http://amino-cbbs.sourceforge.net/java_apidocs/org/amino/ds/lockfree/LockFreeVector.html但到目前为止,.NET 还没有任何进展。
有任何想法吗?
好吧,我在任何地方都找不到这样的课程;所以我试了一下 http://philosopherdeveloper.com/posts/boy-can-dream.html.
我的源代码ConcurrentList<T>
类是可以在 GitHub 上找到 https://github.com/dtao/ConcurrentList.
它是无锁、线程安全的(我think,基于我的单元测试),并实现IList<T>
.
It does not支持Insert
, RemoveAt
/Remove
, or Clear
.
我很高兴地发现我的实现(我独立提出的)与数据结构的实现非常相似由一些受人尊敬的人士出版 http://www2.research.att.com/~bs/lock-free-vector.pdf在软件的世界里。
有关实现本身的相当简短的讨论,请参见我最近的博客文章 http://philosopherdeveloper.com/posts/how-to-build-a-thread-safe-lock-free-resizable-array.html关于它。
目前,它根本没有记录,考虑到某些代码是多么“棘手”,这有点糟糕:(
如果您查看并发现错误或其他问题,请务必给我一个新的。
无论如何,可能值得您花时间检查一下。如果您这样做,请告诉我您的想法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)