Locked-Free Data Structures笔记
来源:互联网 发布:北京时时彩计划数据 编辑:程序博客网 时间:2024/05/17 09:07
Andrei Alexandrescu 07的文章:http://erdani.com/publications/cuj-2004-10.pdf
03年Maurice Herlihy因为他91年的文章"Wait-Free Synchronization"被授予Dijkstra分布式计算奖,将来可能会导致硬件架构进行升级。他证明了要构建wait-free数据结构,哪些原语(primitive)是好的,哪些原语不适合。比如,论文中给出反例,证明test-and-set,swap,fetch-and-add,原子队列等原语对于合理实现多余两个线程间的同步并不充分。而有一些简单结构足以实现任意数量线程的无锁算法。
最简单最常用且具有普适性的原语之一,就是CAS(compare-and-set),这在多数cpu上都有实现。多数32位处理器上可以支持64位的CAS,intel的汇编指令叫CMPXCHG8.
所谓的无等过程(wait-free procedure)是指不管线程多少,一个线程总是可以在有限步数内完成。
无锁过程(lock-free procedure)是指至少有一个线程在真正执行。
后面实现了WRRM map(Write Rarely Read Many),思路是copy on write。
如果在有gc的环境中,到此就ok了,而如果没有gc,则需要回收旧的map对象,引入引用计数和更多CAS。最后发现现在update是有锁操作了,需要等到引用计数是1的情况下才能更新,最好导致读的并发量也不能太大。
结论是:考虑到内存释放,无锁编程会非常tricky。
0 0
- Locked-Free Data Structures笔记
- Lock-Free Data Structures
- Lock-Free Data Structures
- Lock-Free Data Structures with Hazard Pointers笔记
- (转)无锁编程:Lock-Free Data Structures
- #学习笔记#Princeton Algorithms and Data Structures
- Data Structures
- data structures
- Data Structures
- data structures
- Data Structures
- Data Structures
- Data Structures - Immutable Data Structures
- c之指针与数组(2)Dynamic Data Structures: Malloc and Free--转载
- Python Cookbook 学习笔记 第一章Data Structures and Algorithms
- Python Tutorial 学习笔记3 -- Python Data Structures
- Data Structures and Algorithms
- Data Structures Demystified
- char *a 与char a[] 的区别
- C++ builder提供从MFC到自身支持的过程
- 浅谈决策树c4.5
- Merge Sorted Array
- 6代cpu安装win7系统提示无驱动的解决
- Locked-Free Data Structures笔记
- JavaScript 跨域问题简述
- Android-屏幕适配的了解(基础)
- Apache Kafka
- 仿今日头条
- 三国演义中谁是正统
- css预处理器
- express-validator
- js生成分页