Thttpd源程序解析10 timer.c文件

本文详细解析了Thttpd服务器中Timer.c文件的功能,包括计时器结构、函数作用。Timer结构是一个双向链表,用于限制请求处理、响应及CGI子程序的运行时间。主要函数如tmr_create()用于创建计时器,tmr_timeout()返回超时时间,tmr_run()执行到期的计时器等。这些函数协同工作,管理服务器的计时任务和资源。
摘要由CSDN通过智能技术生成

Thttpd服务器对于请求处理,请求响应和CGI子程序的运行时间是有限制的,这里面限制是由Timer.c文件中的函数完成的。计时器的结构为:

typedef struct TimerStruct {

TimerProc* timer_proc;

ClientData client_data;

long msecs;

int periodic;

struct timeval time;

struct TimerStruct* prev;

struct TimerStruct* next;

int hash;

} Timer;

由此可知此结构为一个双向链表结构。

timer_proc为延时处理函数。

client_data为函数的参数。

msecs:为延时处理时间单位为毫秒。

periodic:为计时器重加载表示

time:为此时间处理函数执行的时间。

prev:为此计时器的前向指针。

next:为此计时器的后向指针

hash:为计算的此计时器的hash值。

 

下面将介绍这个文件中的函数。

static unsigned int hash( Timer* t )

hash函数是根据传入的Timer型数据的秒数和毫秒数的异或计算在去计时器数组数的余,得到这个时间再计时器数组中的位置。


static void l_add( Timer* t )

l_add是将创建的计时器处理函数添加在计时器处理链表中,如果计算在hash值的表项的值为空表示此表项为空设置t为此表项的头结点,对于此表项不为空(hash表存在冲突)根据执行时间的先后顺序排序在此表项中的位置

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值