C/C++
oygg2008
这个作者很懒,什么都没留下…
展开
-
再论 无锁数据结构(下)
上回说到实现了一个无锁的 WRRM 的指针保护算法,但存在一个问题是:写线程在更新指针之后,更新游离对象引用计数之前,被强制杀死,会造成读取线程的活锁,这有悖一个原则……好像叫什么“写无关原则”,即使一个线程崩溃也不该对其他线程造成太大影响(当然,所有线程全部被杀的话,啥算法都玩完), 下面的方法,可解决那个个可能存在的活锁问题:在object里面再增加一个成员,int nTmpRelea原创 2009-09-06 15:07:00 · 1163 阅读 · 0 评论 -
再论 无锁数据结构 (上)
看过 Andrei Alexandrescu 老师的 《锁无关的(Lock-Free)数据结构》和 《锁无关的数据结构与Hazard指针》两篇文章,感觉受益颇深前文给出一个 WRRMBNTM (Write-Rarely-Read-Many-But-Not-Many,少写多 读,但不是太多)的map后文给出一个 Hazard 指针彻底解决这个问题,真正实现 WRRM 的map不过看原创 2009-09-06 08:55:00 · 1564 阅读 · 0 评论 -
无锁数据结构lock-free 的 本质
无锁算法的精髓在于 ,CAS(compare-and-swap),它的本质思想是通过原子操作来实现 系统从一个状态进入另一个状态的改变。它的思想和普通的锁不同,普通的锁需要 先获得锁->修改系统状态->再释放锁这三个步骤来实现系统状态的改变,对普通锁的外部而言,只有锁被释放,其他过程才能看到状态的改变,而在锁没有释放前,其他等待的过程被操作系统调度给“定住”了。无锁算法 没有获得锁和释放原创 2009-09-05 13:38:00 · 1944 阅读 · 2 评论 -
C++垃圾回收 之 智能指针增强方案 (一)
长久以来,C++程序员都要花费大量的时间管理指针和内存,指针失效,内存泄漏是C++程序非常常见的BUG,而C++语言本身没有比较完善的垃圾回收机制。智能指针可算是一个比较成熟的资源管理方式,但智能指针本身使用引用计数的方式,天生具有不能够检测循环引用这种资源泄漏的问题,虽然boost已经提出weak_ptr这种解决方案,但weak_ptr本身不管原创 2009-09-05 00:07:00 · 1588 阅读 · 1 评论