实现无锁的栈与队列(5):Hazard Pointer
摘要:两年多以前随手写了点与 lock free 相关的笔记: "1" , "2" , "3" , "4" ,质量都不是很高其实(读者见谅),但两年来陆陆续续竟也有些阅读量了(可见剑走偏锋的技巧是多容易吸引眼球)。笔记当中在解决内存释放和 ABA 问题时提到了 Hazard Pointer 这个东西,有两
阅读全文
posted @
2016-03-04 20:40
twoon
阅读(6095)
推荐(1) 编辑
说说尾递归
摘要:微博上看到有人在讨论尾递归,想起以前曾看过老赵写的一篇相关的博客,介绍的比较详细了,相信很多人都看过,我也在下面留了言,但挑了个刺,表示文章在关键点上一带而过了,老赵自然是懂的,但看的人如果不深入思考,未必真正的明白,下面我说说我的理解。什么是尾递归什么是尾递归呢?(tail recursion),...
阅读全文
posted @
2013-12-28 16:35
twoon
阅读(27965)
推荐(21) 编辑
实现无锁的栈与队列(4)
摘要:现在我们来尝试解决前一篇文章提到的问题。(一)首先是内存释放的问题。这个问题乍看起来很棘手:我们现在要访问一段内存,但却不知道这段内存是否还合法,是否已被释放。怎么办呢?很直接的一个想法是,看看有没别的方式可以检查该内存是否还合法,这个想法很单纯,但从前面几篇文章的讨论我们得知,任何时候直接去碰队列...
阅读全文
posted @
2013-08-08 22:26
twoon
阅读(5845)
推荐(5) 编辑
实现无锁的栈与队列(3)
摘要:怎样实现一个无锁队列,网络上有很多的介绍,其中流传最广,影响最大的恐怕就属于以下两篇论文:a) "Implementing lock free queue" by John.D.Valoisb)"Simple, Fast, and Practical Non-Blocking and Blockin...
阅读全文
posted @
2013-07-07 19:15
twoon
阅读(9328)
推荐(1) 编辑
实现无锁的栈与队列(2)
摘要:书续上回:实现无锁栈与队列(1)对于下面这个看起来很美好的无锁栈: 1 //无锁的栈。 2 3 typedef ELEM int; 4 #define MAX (2048) 5 6 static ELEM Stack[MAX]; 7 static int top = 0;...
阅读全文
posted @
2013-07-01 13:20
twoon
阅读(4077)
推荐(0) 编辑
实现无锁的栈与队列(1)
摘要:为了实现一个快速无锁的 logging 模块, 这几天花了不少时间去了解怎样实现一些无锁的操作及与之相对应的数据结构。对多线程场景下的无锁操作的研究一直是个热点,理想中的无锁操作,它应能天然地避开有锁操作的一些缺陷,比如: 1)减少线程切换,能够相对快速高效地读写(不使用 mutex, semap...
阅读全文
posted @
2013-06-30 23:59
twoon
阅读(5019)
推荐(0) 编辑