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

jake1036

larbin源碼分析(七) larbin中的2種容器與4個url隊(duì)列

larbin源碼分析(七) larbin中的2種容器4個url隊(duì)列

  一 larbin中的2中類型的隊(duì)列
  static SyncFifo<url> *URLsPriority;          //最高優(yōu)先級   
  static SyncFifo<url> *URLsPriorityWait;   //次高優(yōu)先級
  static PersistentFifo *URLsDisk;             //低優(yōu)先級
  static PersistentFifo *URLsDiskWait;      //最低優(yōu)先級
  上述4個URL隊(duì)列的優(yōu)先級,由上到下依次遞減。

   四種url隊(duì)列的具體使用,留待以后分析。
  二 下面主要分析 SyncFifo
       該類實(shí)際上為一個同步處理的先進(jìn)先出的隊(duì)列。
       1 類的主要成員變量
           uint in, out;                              //in表示入隊(duì)指針,out表示出隊(duì)指針
           uint size;                                 //表示隊(duì)列的大小
           T **tab;                                 //指針的指針,T表示類模板
           pthread_mutex_t lock;            //互斥變量
           pthread_cond_t nonEmpty;     //互斥條件變量     
     2 一般同樣的隊(duì)列同步框架
       (1) 放入隊(duì)列中的處理
             pthread_mutex_lock(&lock)      
              //放入隊(duì)列操作  
             put()                //入隊(duì)操作            
             pthrad_cond_signal(&lock)   //向取隊(duì)列線程發(fā)送信號
             pthread_mutex_unlock(&lock) 
       (2)從隊(duì)列中取出
             pthread_mutex_lock(&lock)      
             while(empty)
                pthread_cond_wait(&nonEmpty) //執(zhí)行該句的時候,會釋放該Mutex鎖 lock
             //取隊(duì)列處理 
            pthread_mutex_unlock(&lock) 
    3 成員函數(shù)
    (1)構(gòu)造函數(shù)
        template <class T>
       SyncFifo<T>::SyncFifo (uint size) { //執(zhí)行的操作:構(gòu)建隊(duì)列緩沖區(qū)
          tab = new T*[size];                    //初始化頭尾指針,初始化互斥變量
          this->size = size;
          in = 0;
         out = 0;
         mypthread_mutex_init (&lock, NULL);
         mypthread_cond_init (&nonEmpty, NULL);
        }
    (2)~SyncFifo() 
           析構(gòu)函數(shù)執(zhí)行tab緩沖區(qū)的釋放,以及互斥變量 ,互斥條件變量的銷毀。
     (3)get函數(shù) ,取隊(duì)頭操作。 套用了基本框架
              template <class T>
                T *SyncFifo<T>::get () {   //
                T *tmp;
                mypthread_mutex_lock(&lock);
                mypthread_cond_wait(in == out, &nonEmpty, &lock); //

               tmp = tab[out];
               out = (out + 1) % size;    //循環(huán)隊(duì)列
               mypthread_mutex_unlock(&lock);
               return tmp;
               }
      (4)tryGet ()  函數(shù)
              該函數(shù)不使用互斥變量,直接使用互斥量,取隊(duì)頭操作。
              若隊(duì)為空,則返回NULL。
       (5) put函數(shù)
            該函數(shù)首先將要插入的元素插入,然后通知阻塞在該信號變量的線程,使其恢復(fù)。
            插入之后,若是in==out,則表示存儲空間已滿,則需要重新申請一個新的空間tmp(空間為原來的2倍),
            并將原來tab中的數(shù)據(jù)復(fù)制到tmp中。
           具體實(shí)現(xiàn) 代碼如下:
            mypthread_mutex_lock(&lock);
            tab[in] = obj;
            if (in == out) { //若之前隊(duì)列為空,則需要調(diào)用signal函數(shù)
             mypthread_cond_broadcast(&nonEmpty);
           }
           in = (in + 1) % size ;
           if(in == out) //處理in == out的情況,即隊(duì)列已滿的情況
           {
                T * tmp = new T *[2 * size] ; //成倍地擴(kuò)展緩沖區(qū)域 
                 for(int i =  out ; i < size ; i++) //將tab中的數(shù)據(jù) copy到tmp中
                    tmp[i]  = tab[i] ;
                for(int i = 0 ; i < out ; i++)
                    tmp[i+size] = tab[i] ;
               int = out + size ;  
               size *= 2 ;
               delete [] tab;
               tab = tmp  
           }

    (6)length 函數(shù)
           首先需要利用互斥信號量進(jìn)行互斥操作,然后由于是循環(huán)隊(duì)列,所以需要使用
            len = (in - out + size) % size ;





   

    

posted on 2011-06-13 20:39 kahn 閱讀(944) 評論(2)  編輯 收藏 引用

Feedback

# re: larbin源碼分析(七) larbin中的2種容器與4個url隊(duì)列 2014-06-16 18:55 Humton

謝謝你的博客 :D

小小錯誤:
T * tmp = new T *[2 * size] ; //成倍地擴(kuò)展緩沖區(qū)域

是T **tmp = new T *[2 * size] ;  回復(fù)  更多評論   

# re: larbin源碼分析(七) larbin中的2種容器與4個url隊(duì)列 2014-06-21 15:18 Humton

(1) 放入隊(duì)列中的處理
pthread_mutex_lock(&lock)
//放入隊(duì)列操作
put() //入隊(duì)操作
pthrad_cond_signal(&lock) //向取隊(duì)列線程發(fā)送信號
pthread_mutex_unlock(&lock)

這里應(yīng)該是 pthread_cond_signal(&nonEmpty)   回復(fù)  更多評論   


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲精品日韩欧美| 国产精品v欧美精品v日本精品动漫| 久久综合综合久久综合| 欧美一区二区三区久久精品 | 国产一区二区高清不卡| 国产日韩在线一区| 国产午夜精品一区理论片飘花| 国产一区二区三区在线观看网站| 国产欧美日韩综合精品二区| 国产欧美日本| 亚洲第一综合天堂另类专| 日韩视频在线观看| 久久久久国产精品午夜一区| 亚洲最新色图| 午夜国产一区| 免播放器亚洲一区| 欧美日韩国产欧| 国产精品揄拍500视频| 影音先锋在线一区| 亚洲图片在线观看| 开心色5月久久精品| 亚洲国产专区| 亚洲视频精选| 欧美电影打屁股sp| 国产日韩欧美在线看| 亚洲日本欧美日韩高观看| 亚洲一卡久久| 欧美高清在线观看| 亚洲欧美日韩在线观看a三区| 免费一区视频| 国产日产欧产精品推荐色| 亚洲激情第一页| 久久久精品久久久久| 亚洲精品女av网站| 欧美亚洲一区在线| 欧美日韩精品是欧美日韩精品| 国产欧美精品一区二区三区介绍| 尤妮丝一区二区裸体视频| 午夜精品久久久久久久久久久久| 欧美国产三级| 久久久久久久999| 国产精品综合色区在线观看| 亚洲免费成人| 欧美成人伊人久久综合网| 亚洲女人小视频在线观看| 欧美日韩大陆在线| 亚洲精选视频在线| 欧美激情网友自拍| 久久免费国产精品1| 国产亚洲一区精品| 欧美影院午夜播放| 中国女人久久久| 欧美色道久久88综合亚洲精品| 亚洲国产精品一区二区第四页av| 久久久久久噜噜噜久久久精品 | 日韩午夜av| 亚洲第一区中文99精品| 久久久久欧美| 在线观看日韩精品| 蜜桃久久av一区| 麻豆成人在线观看| 亚洲成人在线| 亚洲电影成人| 欧美精品麻豆| 亚洲视频在线看| 亚洲精品国偷自产在线99热| 欧美黄色视屏| 亚洲小视频在线| 欧美成人免费小视频| 欧美一区二区三区男人的天堂| 亚洲另类在线视频| 欧美另类在线播放| 夜夜爽av福利精品导航| 亚洲精美视频| 欧美日韩国产限制| 亚洲男人第一av网站| 欧美亚洲在线播放| 亚洲激情视频在线播放| 91久久综合亚洲鲁鲁五月天| 欧美日韩国产综合新一区| 亚洲网站在线| 欧美一区二区成人| 亚洲人成在线播放网站岛国| 日韩视频在线观看国产| 国产精品亚洲精品| 欧美+日本+国产+在线a∨观看| 欧美丰满高潮xxxx喷水动漫| aa亚洲婷婷| 欧美在线一区二区三区| 亚洲国产日韩一区| 一区二区三区欧美在线| 国产在线视频欧美一区二区三区| 欧美二区视频| 国产老女人精品毛片久久| 麻豆av一区二区三区久久| 欧美另类高清视频在线| 久久久精品国产一区二区三区| 欧美高清不卡| 久久久久99| 欧美日韩专区| 欧美激情区在线播放| 国产欧美日韩亚洲一区二区三区| 欧美激情视频给我| 国产一区二区三区在线观看视频| 亚洲区免费影片| 国产一区二区成人| 一本色道久久99精品综合| 国产一区视频网站| 国产精品99久久99久久久二8| 亚洲第一区在线| 亚洲欧美色一区| 亚洲特色特黄| 欧美高清hd18日本| 欧美/亚洲一区| 国产一区二区三区免费观看| 亚洲美女中出| 亚洲精品美女在线观看| 欧美一区二区三区在线看| 一区二区三区免费在线观看| 久久精品一区| 久久久蜜臀国产一区二区| 国产精品电影观看| 日韩视频免费观看| 亚洲三级国产| 麻豆精品精华液| 玖玖精品视频| 韩国av一区| 欧美在线视频观看免费网站| 亚洲欧美三级伦理| 欧美午夜精品久久久久久久 | 午夜久久久久久| 亚洲国产精品欧美一二99| 亚洲福利精品| 亚洲国产视频一区二区| 久久久精品日韩| 久久影音先锋| 激情伊人五月天久久综合| 性娇小13――14欧美| 欧美在线国产| 国产日韩欧美二区| 亚洲欧美在线磁力| 久久精品国产第一区二区三区最新章节 | 一区二区三区 在线观看视频| 久久久欧美精品| 男人插女人欧美| 狠狠爱成人网| 免费在线成人| 亚洲日韩中文字幕在线播放| 亚洲国产精品v| 欧美精品v日韩精品v国产精品| 亚洲日韩欧美视频一区| 日韩亚洲欧美一区| 欧美日韩在线视频观看| 亚洲一区二区黄色| 久久se精品一区二区| 国内成+人亚洲| 欧美国产激情| 亚洲午夜免费视频| 久久一日本道色综合久久| 最新中文字幕亚洲| 欧美涩涩网站| 欧美一区二区大片| 亚洲国产日韩在线一区模特| 亚洲黄色av一区| 国产精品一区二区三区久久久| 久久精品免费播放| 亚洲人成人一区二区在线观看| 一本久久a久久免费精品不卡| 国产精品免费视频xxxx| 久久精品一区二区三区四区| 亚洲黄色有码视频| 欧美在线综合视频| 亚洲精品久久久久久下一站| 国产精品大片wwwwww| 另类尿喷潮videofree| 99riav1国产精品视频| 久久这里只精品最新地址| 日韩视频免费在线| 国产在线高清精品| 欧美三级日本三级少妇99| 久久精品一区二区三区不卡牛牛| 亚洲精品欧美日韩专区| 久久午夜精品一区二区| 亚洲午夜电影网| 亚洲成人在线视频网站| 国产精品va在线| 欧美福利视频在线| 久久久999精品视频| 亚洲视频在线一区| 亚洲精品乱码| 免费中文日韩| 久久精品久久99精品久久| 亚洲图片你懂的| 亚洲精品国偷自产在线99热| 国产欧美精品| 国产精品美女久久久免费| 欧美伦理影院| 欧美极品在线视频| 免费亚洲视频| 欧美成人午夜视频|