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

隨筆 - 119  文章 - 290  trackbacks - 0

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

常用鏈接

留言簿(12)

隨筆分類

我的博客

搜索

  •  

積分與排名

  • 積分 - 305651
  • 排名 - 84

最新評論

閱讀排行榜

接著昨天的cache_flush,首先進入以此開頭的這個代碼塊
        if (children) {
            
while (j<children->number) {
這個代碼塊主要是處理一些取消內存關系的cache節點,并預估需要重新分配的children大小。這里有一個先決條件是,cache是按child_id升序排序的,同樣children也是升序排序的。

                if (child == (children->children[j] | UNSET_MASK)) {
                    
--k;
                    head
->parent=-1;
                    
--sz;
                    
++head;
                }
從上面可以看出,如果是取消內存關系的cache節點,之前統計的cache節點數量sz就要減一。估計有些人會納悶為什么還要減一,畢竟當初統計節點數量的時候,就沒有把UNSET_MASK的cache節點算進去。這是因為sz的作用并不是用來表示節點的數量,而是表示children需要拓展的尺寸,由于標記UNSET_MASK的child要從children中刪除,那么children數組中就有空閑的位置,所以需要拓展的尺寸也就減少,sz就減一了。

再看
                if (head>=next) {
                    
goto copy_next;
                }
如果cache中的所有節點都是UNSET_MASK的話,就會跳到copy_next處,移動children的其他部分來填充被刪除的那些child_id。copy_next的代碼我就不貼了。

                else if ((child & ~UNSET_MASK) < children->children[j]) {
                    
break;
                }
如果進入這個判斷,則說明cache中不全是UNSET_MASK節點,還包含添加新關系的節點存在。雖然這個判斷不直觀,但是鑒于他們都是升序排序的,這樣的判斷也就行得通了。

進入下面的代碼,就是利用上面計算出來的sz拓展children的時候了。
        if (sz>0{
            children
=node->u.n.children=link_expand(node->u.n.children,sz);
            assert(children);
            memmove(children
->children + j + sz, children->children +j , (children->number - j) * sizeof(int));
            j
+=sz;
        }
其中的link_expand就是拓展數組的地方,里面的實現基本上就是realloc,策略不同而已。
拓展之后,用移動內存的方式,在children數組中留個空缺,容納還沒有處理的cache節點。空缺要留得足夠大,搞不好剩下的cache節點都是添加的。

接下來有再進入一個代碼塊
while(j<children->number) {
這個while循環和上面講述的有點像,不過其任務不再是計算需要拓展的空間。
第1個if,仍舊是從children中刪除關系的。但是第2個if,則不再是一個break了
            else if ((child & ~UNSET_MASK) < children->children[j]) {
                assert(child 
>= 0 );
                children
->children[k]=child;
                head
->parent=-1;
                
++head;
                
--j;
            }
新添加的child_id,放到剛才拓展children時騰出來的空間中去,并保持children升序排序,這一點很重要。

剩下的代碼就沒什么了,就是復制child_id到children中,無論child_id來自children還是cache,總之要保證他們升序排序。

看起來,cache_flush是看完了。但是仍舊覺得這個函數無比爛,有太多的地方,需要用人類有限的處理能力去進行分析和維護。
明天,是應該看看之前那些暫時略過不看的代碼了。到這里為止,只是跟著程序一條分支看看而已,還有其他分支呢。
posted on 2008-09-16 21:41 LOGOS 閱讀(1723) 評論(0)  編輯 收藏 引用
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            一区二区三区www| 亚洲国产成人精品久久| 国产精品久久久91| 136国产福利精品导航网址应用| 亚洲自拍三区| 日韩午夜电影在线观看| 蜜桃av一区二区三区| 国产一区二区高清不卡| 亚洲网站在线看| 亚洲免费成人av| 欧美日本中文| 一级日韩一区在线观看| 亚洲国产婷婷综合在线精品| 久久大逼视频| 国产亚洲视频在线| 久久久久久久性| 欧美在线视频在线播放完整版免费观看| 国产精品电影在线观看| 亚洲免费在线视频| 亚洲综合不卡| 国产午夜精品久久久久久久| 午夜精品一区二区三区在线视| 一本色道久久综合亚洲二区三区 | 亚洲免费观看高清完整版在线观看| 老司机免费视频一区二区三区 | 亚洲免费在线观看视频| 亚洲制服少妇| 国内视频精品| 毛片av中文字幕一区二区| 久久久噜噜噜久久人人看| 一区免费观看| 亚洲国产一区二区三区a毛片| 欧美精选一区| 欧美一区二区在线观看| 午夜在线a亚洲v天堂网2018| 伊人精品在线| 亚洲乱码久久| 国产亚洲va综合人人澡精品| 久久亚洲欧美| 欧美日韩1区2区| 欧美亚洲免费| 蜜桃久久av一区| 一区二区三区日韩欧美精品| 亚洲专区在线视频| 一区在线观看| 国产精品99久久久久久久女警| 国产视频一区在线观看| 免费成人在线观看视频| 欧美日本网站| 久久精品人人爽| 欧美伦理在线观看| 亚洲欧美伊人| 136国产福利精品导航网址| 亚洲日本中文字幕免费在线不卡| 国产精品久久久久久影视| 理论片一区二区在线| 欧美日韩理论| 麻豆国产精品777777在线| 欧美日韩岛国| 免费高清在线一区| 欧美午夜在线一二页| 欧美jizz19性欧美| 国产午夜精品视频免费不卡69堂| 欧美黑人一区二区三区| 国产午夜精品美女视频明星a级| 亚洲激情在线观看视频免费| 国产无遮挡一区二区三区毛片日本| 亚洲国产91| 韩国成人理伦片免费播放| 一本久道久久综合中文字幕| 亚洲国产成人不卡| 午夜精品久久久久久久| 亚洲一区二区黄| 欧美激情一区二区三区高清视频 | 日韩午夜av| 1024欧美极品| 午夜精品福利一区二区蜜股av| 99re视频这里只有精品| 久久综合五月天婷婷伊人| 久久国产精品第一页| 欧美日韩国产区| 亚洲第一网站| 永久免费视频成人| 欧美一级片一区| 亚洲欧美在线另类| 欧美日韩一二三区| 91久久精品国产91久久性色tv| 在线观看亚洲精品视频| 久久久久综合网| 久久久最新网址| 国产日韩欧美电影在线观看| 亚洲视频在线观看网站| 亚洲一二三区在线观看| 国产精品videosex极品| 亚洲无限av看| 欧美中文字幕久久| 国产一区日韩一区| 欧美在线资源| 美女999久久久精品视频| 国产亚洲激情在线| 久久久久国产免费免费| 免费黄网站欧美| 亚洲第一中文字幕| 欧美成人精品一区| 91久久精品国产| 亚洲无玛一区| 乱人伦精品视频在线观看| 嫩草成人www欧美| 亚洲人成在线免费观看| 欧美精品大片| 亚洲一级免费视频| 久久青青草原一区二区| 亚洲高清免费在线| 欧美国产专区| 中国成人黄色视屏| 久久久精品久久久久| 影音先锋亚洲一区| 欧美久久综合| 亚洲第一精品福利| 欧美精品1区2区3区| 亚洲美女黄色| 性色av一区二区三区| 国产亚洲综合在线| 久久亚洲国产成人| 亚洲人成绝费网站色www| 亚洲永久免费精品| 伊人激情综合| 国产精品久久91| 久久久久久免费| 亚洲毛片网站| 久久综合伊人77777麻豆| 日韩视频精品在线| 国产日韩综合| 欧美区国产区| 欧美在线欧美在线| 亚洲韩国青草视频| 性欧美超级视频| 亚洲人成网站精品片在线观看| 国产精品啊啊啊| 蜜臀av性久久久久蜜臀aⅴ| 一区二区国产日产| 欧美不卡高清| 午夜日韩av| 日韩一区二区福利| 激情欧美一区二区| 国产精品色婷婷| 欧美成人第一页| 久久精品一区四区| 亚洲永久免费视频| 亚洲日韩视频| 欧美aⅴ99久久黑人专区| 午夜精品偷拍| 一区二区三区免费看| 激情六月综合| 国产日韩专区| 国产精品青草久久久久福利99| 美女久久一区| 久久久久成人网| 亚洲男人的天堂在线观看| 亚洲精品在线观| 免费亚洲电影在线观看| 香蕉成人啪国产精品视频综合网| 亚洲国产日韩一区二区| 国产精品一区二区在线观看不卡| 欧美高潮视频| 免费成人黄色| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲女爱视频在线| 中文在线资源观看网站视频免费不卡 | 在线播放中文字幕一区| 国产精品美女xx| 欧美日韩中文字幕在线| 欧美久久久久久蜜桃| 欧美国产大片| 欧美精品久久99久久在免费线| 欧美成人免费网站| 欧美激情国产日韩| 欧美风情在线| 欧美伦理视频网站| 欧美伦理a级免费电影| 欧美日韩喷水| 国产精品av久久久久久麻豆网| 欧美三级在线播放| 国产精品老牛| 国产综合精品一区| 激情综合网址| 亚洲国产高清在线观看视频| 亚洲高清网站| 先锋影音网一区二区| 午夜激情久久久| 午夜视频一区| 久久午夜国产精品| 免费观看成人网| 欧美精品播放| 欧美日韩国产色综合一二三四| 国产精品免费在线| 国产精品欧美一区二区三区奶水| 理论片一区二区在线| 国产精品99久久久久久久vr| 欧美顶级少妇做爰|