世界上最简单的无锁Hash Table

​ 一个无锁的hash table是把双刃剑,它可以为某些应用程序提供性能上的大幅提升,它的缺点就是过于复杂了。Dr. Cliff Click使用Java写了第一个可工作的无锁hash table,并在2007年的时候公布其源码,并且在同一年在Google发表了演讲。原理分析​ 本文将通过使用C++11来编写一个无锁的hash table,作为一个程序员我们通常会贫直觉去写一些通用的数据结构...
阅读(464) 评论(0)

并发数据结构Leapfrog Probing

Leapfrog Probing一个hash table是用来存取一系列key/value对,有很多方式用来实现一个hash table。但是都有一个共同点就是桶,每一个hash table都会包含一系列的桶,对于每一个key来说都会唯一的属于一个桶。为了决定某个key是属于哪个桶,你需要对这个key进行hash,然后对它取模,其余数就是这个key所属于的桶下标,整个过程如下图:不可避免的,最终会有...
阅读(531) 评论(0)

使用QSBR进行安全的内存回收

使用QSBR进行安全的内存回收在多线程场景下,经常我们需要并发访问一个数据结构,为了保证线程安全我们会考虑使用互斥设施来进行同步,更进一步我们会根据对这个数据结构的读写比例而选用读写锁进行优化。但是读写锁不是唯一的方式,我们可以借助于COW技术来做到写操作不需要加锁,也就是在读的时候正常读,写的时候,先加锁拷贝一份,然后进行写,写完就原子的更新回去,使用COW实现避免了频繁加读写锁本身的性能开销。读...
阅读(345) 评论(0)
    个人资料
    • 访问:77482次
    • 积分:1867
    • 等级:
    • 排名:千里之外
    • 原创:110篇
    • 转载:0篇
    • 译文:1篇
    • 评论:21条
    博客专栏
    最新评论