wifidog 認證Lighttpd1.4.20源碼分析之bitset.c(h) -------位集合的使用

使用一個比特位來表示一個事件的兩種狀態(tài),即節(jié)省內(nèi)存,又可以提高運行速度。在Lighttpd中,提供了一個bitset數(shù)據(jù)結(jié)構(gòu),用來管理使用一個比特位集合。

在bitset.h中,比特位集合的數(shù)據(jù)結(jié)構(gòu)定義如下:

typedef struct

{

size_t *bits;

size_t nbits;

} bitset;

bits指向一個size_t類型的數(shù)組,存放bit集合。size_t類型通常被定義成一個無符號的整型(int或long),其長度和具體的機器有關(guān),這個讀者可以查閱相關(guān)的資料。nbits記錄bitset中bit為的個數(shù)。其圖示如下:

+-------------+

| bitset結(jié)構(gòu)? ? |

+-------------+? ? ? ? ? ? +-----------------------------+

|? bits? ? ? ? ? |? -------->? ? ? ? ? |? |? |? |? |? |? |? |? |? |? | | | | | |

+-------------+? ? ? ? ? ? +-----------------------------+

|? nbits = 10? |

+-------------+

為了提高運行的速度,對與bitset的主要操作都有四個宏來實現(xiàn):

各個宏的作用都在注釋中說明,如下代碼所示:


......本站只呈現(xiàn)部分內(nèi)容,查看完整文章請到WiFiDog官網(wǎng)社區(qū) http://www.wifidog.pro/2015/04/15/wifidog%E8%AE%A4%E8%AF%81lighttpd%E4%BD%8D%E9%9B%86%E5%90%88%E4%BD%BF%E7%94%A8.html,轉(zhuǎn)載請注明出處

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 11,183評論 6 13
  • 布隆過濾器 Bloom Filter 布隆過濾器,用來判斷一個元素是否在集合中。它的特點是節(jié)省空間,但是有誤判。有...
    周肅閱讀 4,685評論 0 5
  • 夢見我和我弟去花市買了一盆花,花了18塊錢,但是沒有發(fā)芽。所以我就和我弟去找老板賠償,一開始老板不認賬,我就拿著包...
    BWV1007閱讀 697評論 0 0
  • “畢業(yè)等于失業(yè)……”――大學(xué)生說 “讀那么多書有什么用?到頭來還不是基層打工!”――家長說 “早知道還不如初...
    晗一1673閱讀 169評論 0 1
  • 照舊,從夜晚到黎明,醒來,照舊,洗把臉,趕地鐵。入口處,舊卡過期,六月了,得買新月卡了。喲!六月第一天不是兒童節(jié)嗎...
    三耳秀才閱讀 197評論 0 0