使用一個比特位來表示一個事件的兩種狀態(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)載請注明出處