<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[tornadoHot的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/tornadoHot</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; tornadoHot]]></copyright><item><title><![CDATA[zookeeper分布式锁避免羊群效应（Herd Effect）]]></title><link>https://blog.youkuaiyun.com/tornadoHot/article/details/40507159</link><guid>https://blog.youkuaiyun.com/tornadoHot/article/details/40507159</guid><author>tornadoHot</author><pubDate>Mon, 27 Oct 2014 14:26:40 +0800</pubDate><description><![CDATA[zookeeper分布式锁避免羊群效应（Herd Effect）







本文主要讲述在使用ZooKeeper进行分布式锁的实现过程中，如何有效的避免“羊群效应( herd effect)”的出现。

一般的分布式锁实现

这里简单的讲下一般的分布式锁如何实现。具体的代码实现可以在这里看到：https://svn.apache.org/repos/asf/zookee]]></description><category></category></item><item><title><![CDATA[原子锁]]></title><link>https://blog.youkuaiyun.com/tornadoHot/article/details/40425345</link><guid>https://blog.youkuaiyun.com/tornadoHot/article/details/40425345</guid><author>tornadoHot</author><pubDate>Fri, 24 Oct 2014 11:48:25 +0800</pubDate><description><![CDATA[CAS操作

在开始说无锁队列之前，我们需要知道一个很重要的技术就是CAS操作——Compare & Set，或是 Compare & Swap，现在几乎所有的CPU指令都支持CAS的原子操作，X86下对应的是 CMPXCHG 汇编指令。有了这个原子操作，我们就可以用其来实现各种无锁（lock free）的数据结构。

这个操作用C语言来描述就是下面这个样子：（代码来自Wikipedia的]]></description><category></category></item><item><title><![CDATA[mvcc]]></title><link>https://blog.youkuaiyun.com/tornadoHot/article/details/40345121</link><guid>https://blog.youkuaiyun.com/tornadoHot/article/details/40345121</guid><author>tornadoHot</author><pubDate>Tue, 21 Oct 2014 15:13:23 +0800</pubDate><description><![CDATA[我们可以采用基于多版本并发控制（Multiversion concurrency control，MVCC）思想的无锁事务机制。人们一般把基于锁的并发控制机制称成为悲观机制，而把MVCC机制称为乐观机]]></description><category></category></item><item><title><![CDATA[gcc Options That Control Optimization]]></title><link>https://blog.youkuaiyun.com/tornadoHot/article/details/40181895</link><guid>https://blog.youkuaiyun.com/tornadoHot/article/details/40181895</guid><author>tornadoHot</author><pubDate>Fri, 17 Oct 2014 10:24:12 +0800</pubDate><description><![CDATA[are nowhere used in the source file being compiled.


       Options That Control Optimization


       These options control various sorts of optimizations.


       Without any optimization]]></description><category></category></item><item><title><![CDATA[为什么线程不能调用fork]]></title><link>https://blog.youkuaiyun.com/tornadoHot/article/details/40112143</link><guid>https://blog.youkuaiyun.com/tornadoHot/article/details/40112143</guid><author>tornadoHot</author><pubDate>Wed, 15 Oct 2014 15:46:57 +0800</pubDate><description><![CDATA[The general problem with making fork()
 work in a multi-threaded world is what to do with all of the threads. There are two alternatives. One is to copy all of the threads into the new process. This ]]></description><category></category></item><item><title><![CDATA[C++面试题]]></title><link>https://blog.youkuaiyun.com/tornadoHot/article/details/40094215</link><guid>https://blog.youkuaiyun.com/tornadoHot/article/details/40094215</guid><author>tornadoHot</author><pubDate>Wed, 15 Oct 2014 00:16:39 +0800</pubDate><description><![CDATA[c++一个进程malloc，没有free，程序退出时会回收吗
每个进程有自己独立的4G内存，一个malloc了4G，另外一个malloc 4G能成功吗
内存不足时，淘汰旧页面，换入新页面，页面交换有paging和swapping之分每个进程都有其地址空间，地址空间在逻辑上是连续的物理上可以被分为多个RAM碎片，也可以有部分暂存在磁盘，使得进程可用的内存比实际内存要多操作系统把虚拟内存分成一个个]]></description><category></category></item><item><title><![CDATA[socket调试]]></title><link>https://blog.youkuaiyun.com/tornadoHot/article/details/40017801</link><guid>https://blog.youkuaiyun.com/tornadoHot/article/details/40017801</guid><author>tornadoHot</author><pubDate>Sun, 12 Oct 2014 14:31:48 +0800</pubDate><description><![CDATA[established]]></description><category></category></item></channel></rss>