大家好,又见面了,我是你们的朋友全栈君。
ZT:http://www.cnblogs.com/overred/archive/2009/09/30/Lock-Free-Stack.html
多线程下,无锁编程是种境界!
其实Lock-Free或Lock-Low不单单是一种技术,而是一种思想。
如前篇《High Performance Cacher》,里面使用“伪装双链表”,使锁尽量减少,从而提高性能。
本文将使用CAS的原子访问方式实现一个Lock-Free Stack。
何为CAS?通俗点就是先比较后交换,Interlocked.CompareExchange函数。
何为原子访问?当一个线程访问一个资源的同时,保证其他线程不会在同一时刻访问同一资源,如Interlocked系列函数。
.Net下BCL中的Interlocked系列函数是如何保证这一行为的呢?
泛泛而谈,实现层还是调用硬件支持,最后到CPU层面的总线锁(具体可以参考Rotor实现,有空我单独开篇讲解)。
Lock Free Stack代码:
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/161702.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...