
开源分析
文章平均质量分 93
igaozh
这个作者很懒,什么都没留下…
展开
-
memcached slabs内存分配算法详解
[liexusong原创]Memcached Slab算法是根据powers of 2来将1MB的内存块划分成多个小内存块, 而这1MB的内存块称为页: Powers of 2是2的n次方的意思,例如:2的0次方是1,2的1次方是2,2的2次方是4,2的3次方是8等等。而将1MB的内存按2的n次方划分可以划分成20种不同的内存块,因为2的20次方是1MB(1048576)。所...原创 2012-09-20 15:50:19 · 254 阅读 · 0 评论 -
memcached网络层操作详解
[liexusong原创]memcached的网络层处理大概如下:(1) main函数创建一个侦听服务端的socket, 然后添加到libevent中, 然后当有客户端连接时就会触发libevent事件, 并且调用drive_machine()函数, 就像上面图一样.(2) drive_machine()函数会根据conn的state字段来判断一个要进行什么操作. mem...原创 2012-09-20 15:52:44 · 179 阅读 · 0 评论 -
memcacheq的hashtable
阅读memcacheq的hashtable实现的时候,发现在创建一个存储链表的数组时,使用void **的方法建立数组,即数组里存放的是链表指针,这样在删除元素时,只需要用一个指针的指针(保存当前链表实体的地址),这样删除就方便多了struct entry{ void *k, *v; unsigned int h; struct entry *next;...原创 2012-09-20 18:37:57 · 72 阅读 · 0 评论 -
Memcached源码分析(线程模型)
目前网上关于memcached的分析主要是内存管理部分,下面对memcached的线程模型做下简单分析 有不对的地方还请大家指正,对memcahced和libevent不熟悉的请先google之 先看下memcahced启动时线程处理的流程 memcached的多线程主要是通过实例化多个libevent实现的,分别是一个主线程和n个workers线程 无论是主线程还是workers线程全部通过l...原创 2012-09-25 10:10:45 · 97 阅读 · 0 评论