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

隨筆 - 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>
              亚洲福利视频一区二区| 亚洲高清视频在线观看| 久久久久青草大香线综合精品| 一区二区三区四区国产| 欧美精品一区二区三区很污很色的| 免费久久99精品国产| 亚洲第一精品夜夜躁人人躁| 欧美高清视频免费观看| 日韩一级免费观看| 久久精品国产v日韩v亚洲| 国产亚洲激情| 玖玖玖免费嫩草在线影院一区| 亚洲三级免费电影| 欧美一区二区| 在线观看亚洲一区| 亚洲经典视频在线观看| 欧美日韩一区二区三区| 欧美在线一二三| 日韩亚洲一区二区| 亚洲图色在线| 亚洲第一页在线| 99精品国产一区二区青青牛奶| 久久久在线视频| 亚洲视频精品在线| 亚洲精品国产拍免费91在线| 国产丝袜一区二区| 欧美日韩另类一区| 国产一区二区成人久久免费影院| 91久久综合| 亚洲国产欧美一区二区三区丁香婷| 日韩一区二区精品视频| 亚洲国产精品第一区二区| 亚洲婷婷综合色高清在线| 久久免费的精品国产v∧| 亚洲国产影院| 欧美不卡福利| 欧美成人黄色小视频| 99精品国产福利在线观看免费 | 欧美黑人国产人伦爽爽爽| 国产精品家庭影院| 欧美日韩喷水| 在线看欧美日韩| 欧美一区二区三区免费视频| 亚洲国产精品ⅴa在线观看| 性欧美大战久久久久久久免费观看| 亚洲免费精品| 午夜精品影院| 欧美亚洲成人网| 欧美猛交免费看| 国产午夜精品福利| 亚洲自拍偷拍网址| 亚洲精品一线二线三线无人区| 伊人久久亚洲美女图片| 国内精品久久久久久| 国产日韩欧美视频在线| 夜夜嗨av一区二区三区四季av | 香港久久久电影| 久久久精品午夜少妇| 久久久97精品| 欧美一级夜夜爽| 久久久久久有精品国产| 国产麻豆视频精品| 黑人一区二区| 亚洲大胆在线| 榴莲视频成人在线观看| 亚洲电影第三页| 麻豆精品视频在线观看视频| 欧美高清一区| 亚洲精品偷拍| 亚洲国产精品一区二区三区 | 欧美性猛片xxxx免费看久爱 | 免费看黄裸体一级大秀欧美| 久久一区免费| 欧美国产日本| 亚洲日本va午夜在线影院| 欧美国产三级| 一级成人国产| 久久精品亚洲精品国产欧美kt∨| 欧美成人一区二区三区| 欧美日韩直播| 亚洲国产精品第一区二区| 欧美成人高清视频| 欧美另类69精品久久久久9999| 99热免费精品在线观看| 一卡二卡3卡四卡高清精品视频| 欧美小视频在线| 久久精品国产成人| 免费黄网站欧美| 亚洲在线中文字幕| 久久成年人视频| 国产精品白丝黑袜喷水久久久| 亚洲欧美不卡| 日韩亚洲一区在线播放| 国产精品美女久久久久久2018 | 午夜日韩av| 性色av一区二区三区红粉影视| 国产美女精品视频| 欧美大学生性色视频| 亚洲一区二区三区成人在线视频精品| 欧美在线一二三区| 亚洲美女在线观看| 午夜精品一区二区三区在线播放| 精品动漫3d一区二区三区| 亚洲男人第一av网站| 欧美在线999| 99精品国产福利在线观看免费 | 久久尤物电影视频在线观看| 亚洲精品久久久蜜桃| 国产精品影院在线观看| 欧美激情第六页| 国产精品色午夜在线观看| 亚洲免费在线视频| 久久综合九色综合网站| 欧美亚洲一区| 欧美理论电影在线播放| 蜜臀av性久久久久蜜臀aⅴ| 欧美午夜精品久久久| 欧美高清在线精品一区| 国产亚洲欧美激情| 亚洲深夜激情| 国产欧美欧洲在线观看| 亚洲欧美日韩综合| 你懂的成人av| 猛男gaygay欧美视频| 国产欧美日韩激情| 一本色道久久综合亚洲二区三区 | 欧美亚洲免费电影| 在线中文字幕不卡| 欧美福利影院| 欧美激情第3页| 亚洲第一久久影院| 久久午夜色播影院免费高清| 久久久一本精品99久久精品66| 国产精品夜夜嗨| 亚洲视频精品在线| 亚洲一级高清| 欧美一区二区三区精品| 午夜国产精品视频免费体验区| 欧美另类极品videosbest最新版本| 久久这里只有| 在线观看欧美一区| 巨胸喷奶水www久久久免费动漫| 欧美在线影院在线视频| 欧美怡红院视频一区二区三区| 亚洲免费视频在线观看| 欧美日韩成人综合| 久久经典综合| 国产午夜精品一区理论片飘花| 一区二区三区日韩在线观看| 亚洲视频1区2区| 国产精品国产馆在线真实露脸| 中日韩在线视频| 久久精彩视频| 在线欧美影院| 欧美激情欧美狂野欧美精品| 99re视频这里只有精品| 欧美一级黄色网| 国产一区二区三区久久精品| 欧美影院视频| 欧美本精品男人aⅴ天堂| 亚洲欧洲精品一区二区三区不卡 | 午夜一区在线| 国内激情久久| 欧美日韩1080p| 亚洲欧美激情四射在线日 | 亚洲午夜精品久久| 久久久人成影片一区二区三区观看 | 欧美激情网友自拍| 亚洲小说欧美另类社区| 国产欧美一区二区精品秋霞影院| 久久久噜久噜久久综合| 亚洲精品少妇| 亚洲国产精品t66y| 欧美日韩国产成人在线免费| 亚洲欧美视频在线| 亚洲综合国产| 亚洲电影自拍| 国产精品免费福利| 欧美成人午夜激情视频| 亚洲一级片在线观看| 欧美成人a∨高清免费观看| 中国亚洲黄色| 在线视频国产日韩| 国产日韩欧美二区| 欧美精品一区二区三区在线播放 | 欧美激情一区| 午夜精品免费视频| 亚洲日本va午夜在线影院| 久久精品视频在线| 亚洲性夜色噜噜噜7777| 一区在线影院| 国产色产综合色产在线视频| 欧美激情视频网站| 久久青青草原一区二区| 亚洲免费视频网站| 一本色道久久综合狠狠躁篇的优点 | 国产精品久久久久久久久搜平片| 欧美成人第一页| 久久天堂av综合合色| 欧美亚洲一区二区在线|