什么是并发数据结构? 引用wiki上的定义
In computer science, a concurrent data structure is a particular way of storing and organizing data for access by multiple computing threads (or processes) on a computer.
简而言之,并发数据结构即允许多线程同时访问(读和写)的数据结构。
并发数据结构中的算法的设计原则主要分两大类,liveness(活性)和safety(安全性),这两个概念最初来源于分布式系统设计。其中liveness特性保证算法可以执行,而safety保证算法最终得到想要的结果。举一个例子:
问题描述:
对一段序列进行排序,得到降序序列
safety特性:
当算法结束时,得到的序列为输入序列的降序序列。
liveness特性:
最终算法可以运行结束,并返回一段序列。
事实上Java.util.concurrent包中一些数据结构就是按照并发数据结构的原则来设计的,比如ConcurrentLinkedQueue,是一个lock-free的双端队列,ConcurrentSkipListMap则是一个lock-free的跳表。Lock-free就是liveness的一个具体表现。为了让大家更加了解并发数据结构的设计原则和设计技巧,这里推荐了一篇综述性质的论文<<concurrent data structure>>,期待大家共同参与翻译。
论文目录
如何翻译
注意事项
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/140779.html