thttpd源码解析 定时器模块

thttpd源码解析 定时器模块

  • thttpd是非常轻量级的http服务器,可执行文件仅50kB。名称中的第一个t表示tiny, turbo, 或throttling
  • 与lighttpd、memcached、redis相比非常小巧,仅有不到8k行,而后三者大小分别为:60k,13k,86k
  • 支持HTTP/1.1和CGI;采用IO复用实现,单线程,可移植;实现了基于URL的文件流量限制功能
  • 特别适用于大量静态数据访问的场景,如图片存储
  • 2004年已经停止维护,有一个关于X-Forwarded-For HTTP header的bug。后来出现stthhpd基于此项目
  • 性能比较参考对比
  • 本文针对timer模块进行分析

timer模块

  • 包括timer.h,timer.c两个文件
  • 使用全局开放式散列表,默认大小67,每个hash节点上的值按照时间顺序排列
  • ClientData定义如下:
    typedef union {
      void* p;
      int i;
      long l;
      } ClientData;
  • TimerProc类型声明如下:

你可能感兴趣的:(C&C++,http服务器,thttpd,select,源码)