青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 119  文章 - 290  trackbacks - 0

博客搬家了哦,請移步
叫我abc

常用鏈接

留言簿(12)

隨筆分類

我的博客

搜索

  •  

積分與排名

  • 積分 - 305651
  • 排名 - 84

最新評論

閱讀排行榜

cache_flush算是這個庫最糟糕的一段代碼了,總共有100多行,縮進糟糕,做很多不同的工作。我就納悶,為什么不抽些子函數出來,這樣的代碼基本上不具備維護價值,因為自己重寫一次,比搞明白這個函數有趣多了。
由于這個函數實在太長,所以不一次全貼上來,一部分一部分的看吧。

qsort(E.cache,CACHE_SIZE,sizeof(struct cache_node),cache_node_cmp);

//----------------------------------------
static int
cache_node_cmp(
const void *a,const void *b)
{
    
const struct cache_node *ca=(const struct cache_node *)a;
    
const struct cache_node *cb=(const struct cache_node *)b;
    
if (ca->parent != cb->parent) {
        
return cb->parent - ca->parent;
    }

    
if (ca->parent == -1 ) {
        
return 0;
    }

    
return (ca->child & ~ UNSET_MASK) - (cb->child & ~UNSET_MASK);
}
首先,對 E.cache進行排序,比較子是cache_node_cmp。
return cb->parent - ca->parent ,是用 cb減去ca的,因此首先根據parent_id進行降序排序。注意,在這一比較結果中,如果ca->parent = -1,那么比較結果為正,空閑節點ca往數組右邊移動;如果cb->parent = -1,那么比較結果為負,空閑節點cb還是會處在數組右邊。
為什么要注意這個呢?因為本次排序的一個結果就是,那些空閑節點都集中到了cache數組的右邊,只要遍歷cache的過程中遇到了第一個空閑節點,那么剩下的必然都是空閑節點了。
當然要達成這個排序結果,還需要下面的這步,if (ca->parent == -1 ) {return 0;}
比較子的最后一句,在parent_id相同的情況下,按child_id升序排序。

E.cache經過排序后,呈現出以下狀況:
1.根據parent_id呈降序排序,并且parent_id相同的節點緊挨在一起
2.空閑的cache節點全部都排在了數組的右邊
3.parent_id相同的節點,按child_id升序排序

    while (i<CACHE_SIZE) {

        
if (parent==-1{
            
return;
        }
排序之后,就是遍歷有序的cache數組??梢钥吹脚判虻男Ч?,當parent_id = -1的時候,就只剩下空閑的cache_node,因此可以退出遍歷。

        head=&E.cache[i];
        next
=head;
        sz
=0;

        
while (next->parent == parent && i<CACHE_SIZE) {
            sz 
+= 1 - UNSET_MASK_BIT(next->child);
            
++next;
            
++i;
        }
這一段代碼,是統計同一parent_id下child的數目。因為有些child_id被標記了 UNSET_MASK,因此這種cache節點就不用統計到總數中了。其中UNSET_MASK_BIT是位移操作,如果child被標記了UNSET_MASK,那么位移的結果就是1,1-1=0,也就沒有統計到總數中了。

struct node *node=&E.pool[parent];
children
=node->u.n.children;
統計了parent擁有的child之后,接下來就是要把這些child記錄到parent的數據結構上了。這里不得不回顧一下struct node的定義,上次看的時候,并沒有探討struct link *children是做什么的,現在可以看看link的定義
struct link {
    
int number;
    
int children[1];
}
;
這個結構就是parent用來記錄其所有child_id的地方。其中number用來記錄child的總數量,而children則是一個整數數組,用來記錄所有的child_id。
cache_flush剩下的操作,就是把新的child_id添加到children中去,當然其中包含其他一些細節處理。這里先把這些東西交代清楚,因為其后的代碼將是比較難以理解的,我仍不是十分的明白。
posted on 2008-09-15 21:34 LOGOS 閱讀(2148) 評論(1)  編輯 收藏 引用

FeedBack:
# re: 垃圾收集的那點事(E) 2008-09-16 10:04 zuhd
寫的不錯,云風這段代碼是用c實現的,讀起來確實有點晦澀,作者分析的精神很贊!  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              国产精品日韩久久久| 亚洲一区视频在线观看视频| 久久精品国产亚洲一区二区三区| 国产精品一区二区在线观看网站 | 久久精品国产2020观看福利| 国产午夜精品全部视频播放| 狼人社综合社区| 麻豆成人小视频| 夜夜嗨网站十八久久| 一本色道久久综合一区 | 久久久国产精彩视频美女艺术照福利| 红桃视频一区| 亚洲精品一区二区网址| 国产精品xxxxx| 久久偷看各类wc女厕嘘嘘偷窃| 久久九九全国免费精品观看| 亚洲免费成人av| 午夜久久久久久久久久一区二区| 伊人久久大香线蕉综合热线 | 亚洲第一色在线| 欧美人妖在线观看| 欧美一区二区在线免费观看| 老色批av在线精品| 午夜精品成人在线| 欧美成人一区二区三区在线观看| 亚洲一区影音先锋| 快射av在线播放一区| 午夜精品国产| 欧美成人蜜桃| 久久久亚洲午夜电影| 欧美日韩国产美女| 欧美ab在线视频| 国产精品午夜在线| 亚洲人www| 影音先锋亚洲视频| 午夜精品福利一区二区蜜股av| 亚洲三级观看| 久久久久久夜| 久久久福利视频| 国产精品久久久久毛片大屁完整版| 欧美xart系列在线观看| 国产日韩欧美一区二区| 亚洲免费观看高清在线观看| 亚洲国产日韩一级| 校园激情久久| 午夜天堂精品久久久久 | 欧美中文字幕视频在线观看| 亚洲视频精品在线| 欧美精品一区二区三区四区| 国产精品毛片a∨一区二区三区|国 | 国产精品久久久久永久免费观看 | 欧美激情视频给我| 激情综合电影网| 午夜日韩在线| 久久国产精品99国产精| 国产精品视频一| 亚洲一二三区在线| 午夜精品电影| 国产日韩精品在线观看| 亚洲午夜免费福利视频| 亚洲一级电影| 国产精品美女黄网| 中文日韩在线| 翔田千里一区二区| 国产欧美日韩视频| 亚洲欧美日韩一区二区在线 | 亚洲欧洲另类| 欧美激情成人在线| 亚洲精选久久| 午夜精品一区二区三区在线播放| 国产精品成人观看视频免费| 中文精品视频| 久久精品国产精品亚洲精品| 激情五月***国产精品| 久久久久久亚洲综合影院红桃| 欧美成人在线免费观看| 亚洲精品一区中文| 欧美日韩一级片在线观看| 一本大道久久精品懂色aⅴ| 亚洲深夜av| 国产婷婷色一区二区三区在线| 欧美与欧洲交xxxx免费观看| 欧美高清视频一区二区| 99国产精品久久久久久久久久| 欧美日韩成人网| 亚洲欧美日韩国产综合精品二区| 久久亚洲精品中文字幕冲田杏梨| 91久久久亚洲精品| 国产精品第一区| 久久久国产91| 亚洲特黄一级片| 免费成人高清在线视频| 一区二区毛片| 狠狠色狠狠色综合日日五| 欧美精品一区在线播放| 亚洲在线观看视频网站| 欧美电影资源| 欧美在线视频日韩| 亚洲美女性视频| 国产亚洲毛片| 欧美视频国产精品| 久久精品一级爱片| 一本色道88久久加勒比精品| 久久在线播放| 午夜欧美大片免费观看| 亚洲国产精品悠悠久久琪琪| 国产精品久久久久久久久免费| 久久久蜜桃一区二区人| 亚洲无线一线二线三线区别av| 欧美成人精品高清在线播放| 先锋影音国产精品| 99av国产精品欲麻豆| 韩国欧美国产1区| 欧美 日韩 国产精品免费观看| 一区在线观看视频| 国产精品乱人伦一区二区 | 亚洲一区视频| 亚洲精选一区| 欧美国产一区二区三区激情无套| 翔田千里一区二区| 亚洲一区中文字幕在线观看| 亚洲激情综合| 雨宫琴音一区二区在线| 国产伦精品免费视频| 欧美日韩在线观看一区二区| 免费观看成人www动漫视频| 欧美一区二区三区在线播放| 亚洲免费综合| 一区二区欧美在线观看| 亚洲区在线播放| 亚洲国产一区二区a毛片| 麻豆国产精品va在线观看不卡| 久久精品国产亚洲精品| 亚洲欧美日韩一区| 亚洲自拍偷拍视频| 亚洲制服av| 亚洲男人的天堂在线| 亚洲一级在线观看| 亚洲一级二级在线| 宅男在线国产精品| 亚洲一级电影| 香蕉亚洲视频| 欧美在线观看视频| 久久成人国产| 久久躁日日躁aaaaxxxx| 美日韩丰满少妇在线观看| 免费日韩成人| 亚洲国产国产亚洲一二三| 亚洲激情图片小说视频| 亚洲国产一区二区在线| 亚洲精品五月天| 亚洲视频www| 欧美一区三区二区在线观看| 欧美一级免费视频| 久久综合色影院| 欧美成人一二三| 国产精品v一区二区三区| 国产日韩欧美电影在线观看| 国产综合色在线视频区| 亚洲韩日在线| 亚洲网站啪啪| 久久久久久国产精品一区| 麻豆精品国产91久久久久久| 91久久极品少妇xxxxⅹ软件| 日韩亚洲欧美成人一区| 亚洲欧美中文日韩在线| 久久一日本道色综合久久| 欧美日本国产精品| 国产九色精品成人porny| 在线欧美一区| 亚洲在线一区二区| 免费人成网站在线观看欧美高清| 亚洲经典一区| 欧美亚洲一区| 欧美精品观看| 国产亚洲一级| 亚洲视频欧美在线| 久久久亚洲影院你懂的| 亚洲伦伦在线| 久久久91精品| 国产精品美女久久久久av超清| 黄色成人免费观看| 亚洲一区在线观看视频| 久久综合久久综合九色| 一区二区三区黄色| 久久综合久久88| 国产精品综合| 亚洲最新色图| 欧美成人免费在线视频| 亚洲女性裸体视频| 欧美日韩福利| 亚洲国产精品久久久| 久久精品2019中文字幕| 日韩视频―中文字幕| 久久香蕉国产线看观看av| 久久国产精品网站| 亚洲欧美国产制服动漫| 欧美a级在线| 亚洲女爱视频在线| 欧美色另类天堂2015|