使用一个比特位来表示一个事件的两种状态,即节省内存,又可以提高运行速度。在Lighttpd中,提供了一个bitset数据结构,用来管理使用一个比特位集合。
在bitset.h中,比特位集合的数据结构定义如下:
typedef struct 
{
size_t *bits;
size_t nbits;
} bitset;
bits指向一个size_t类型的数组,存放bit集合。size_t类型通常被定义成一个无符号的整型(int或long),其长度和具体的机器有关,这个读者可以查阅相关的资料。nbits记录bitset中bit为的个数。其图示如下:
+-------------+
| bitset结构     |
+-------------+     +-----------------------------+
|   bits           |   -------->          |  |  |  |  |  |  |  |  |  |  | | | | | |
+-------------+     +-----------------------------+
|  nbits = 10   |
+-------------+

为了提高运行的速度,对与bitset的主要操作都有四个宏来实现:
各个宏的作用都在注释中说明。

 

操作函数都比较简单短小,直接贴出来了。


 Lighttpd中的bit接合操作剪断精悍,所有的代码都已经在本文中贴出来了。当然,头文件中的函数声明没有贴出来。。。

 


相关文章:

  • 2021-10-10
  • 2021-07-22
  • 2021-08-06
  • 2022-12-23
  • 2021-11-28
  • 2021-06-14
  • 2021-07-10
  • 2021-10-04
猜你喜欢
  • 2022-02-27
  • 2022-01-15
  • 2021-12-15
  • 2021-12-12
  • 2022-03-01
  • 2021-11-21
  • 2021-11-02
相关资源
相似解决方案