Concurrent KDTree with Snapshots, implemented in Java. This article is about some details in implementation.
RDCSS是Harris提出的一种实现double compare single swap方法,使用了single word compare and swap来实现。
Hash trie的并发会存在操作丢失的情况,类似Non-blocking Binary Search Trees里的情况,这里引入了中间结点来解决。同时文章还提出了一种snapshot的方法,这种方法对于tree很有用。
简单记录了一些关于并发的资料(hash table,spinlock,rwlock和CPU对HTM的支持)。
使用了mark标记结点的方式,解决了single word cas无法同时操作multi-word的问题,同时使用外部树减少了操作影响到的结点的数目,还有就是Excellent tutorial about helping mechanism!
今年SOSP的文章,提出了Read-Log-Update,使用了Clock-based logging mechanism和Object-level write-log per thread,解决了RCU不能有多个writer等缺陷。其中的RLU Deferring减少了synchronize调用的次数,提高了cache hit。
RCU is a synchronization mechanism, which is widely used in the Linux kernel.
Understand complex declaration in C.
主要研究了HTM and lock-free indexing的相互影响。
Harris的这篇论文提出了一种新的non-blocking linked-list,不同于Valois使用auxiliary node,Harris在操作的时候进行了mark,解决了插入丢失的问题。论文中有详细的伪代码,清晰的描述了实现的细节。但要注意的是,实际实现必然涉及到内存回收,没有自动内存回收机制的语言会有点麻烦。