使用一個(gè)比特位來表示一個(gè)事件的兩種狀態(tài),即節(jié)省內(nèi)存,又可以提高運(yùn)行速度。在Lighttpd中,提供了一個(gè)bitset數(shù)據(jù)結(jié)構(gòu),用來管理使用一個(gè)比特位集合。
在bitset.h中,比特位集合的數(shù)據(jù)結(jié)構(gòu)定義如下:
typedef struct
{
size_t *bits;
size_t nbits;
} bitset;
bits指向一個(gè)size_t類型的數(shù)組,存放bit集合。size_t類型通常被定義成一個(gè)無符號(hào)的整型(int或long),其長度和具體的機(jī)器有關(guān),這個(gè)讀者可以查閱相關(guān)的資料。nbits記錄bitset中bit為的個(gè)數(shù)。其圖示如下:
+-------------+
| bitset結(jié)構(gòu)? ? |
+-------------+? ? ? ? ? ? +-----------------------------+
|? bits? ? ? ? ? |? -------->? ? ? ? ? |? |? |? |? |? |? |? |? |? |? | | | | | |
+-------------+? ? ? ? ? ? +-----------------------------+
|? nbits = 10? |
+-------------+
為了提高運(yùn)行的速度,對(duì)與bitset的主要操作都有四個(gè)宏來實(shí)現(xiàn):
各個(gè)宏的作用都在注釋中說明,如下代碼所示:
......本站只呈現(xiàn)部分內(nèi)容,查看完整文章請(qǐng)到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)載請(qǐng)注明出處