七、定时器类的编写与解析 —— TinyWebServer

定时器类的编写与解析 —— TinyWebServer

在这里插入图片描述

一、前言

定时器非常好写。就是链表加定时函数。搞懂他的作用就成。

  1. 定时器的作用是什么?
  2. 什么是回调函数?
  3. 用到的函数是什么?

二、问题回答

Ⅰ、定时器的作用是什么?

处理非活跃的连接
非活跃,是指客户端(这里是浏览器)与服务器端建立连接后,长时间不交换数据,一直占用服务器端的文件描述符,导致连接资源的浪费。

Ⅱ、什么是回调函数

#include <iostream>

// 定义一个回调函数类型
typedef void (*Callback)(int);

// 执行操作的函数,接受两个整数和回调函数作为参数
void performOperation(int x, int y, Callback callback) {
    int result = x + y;
    callback(result);
}

// 回调函数,用于处理操作结果
void callbackFunction(int result) {
    std::cout << "操作结果是: " << result << std::endl;
}

int main() {
    // 使用回调函数执行操作
    performOperation(10, 20, callbackFunction);
    
    return 0;
}

在这个示例中,我们首先定义了一个回调函数类型 Callback,它接受一个整数作为参数并返回 void。然后,我们编写了 performOperation 函数,它接受两个整数和一个回调函数作为参数,执行操作后调用回调函数。最后,在 main 函数中,我们使用 performOperation 函数并传递了 callbackFunction 作为回调函数,当操作完成时,callbackFunction 将被调用,并输出操作结果。

操作结果是: 30

如果你运行上述的 C++ 代码,它将输出以下结果:
操作结果是: 30
这是因为 performOperation 函数将输入的两个整数相加(10 + 20),得到结果 30,然后调用了 callbackFunction 回调函数,并将结果作为参数传递给它。回调函数 callbackFunction 接收到结果并将其打印到控制台上。因此,最终输出的内容是"操作结果是: 30"。

Ⅲ、用到的函数是什么?

  • *time_t time(time_t _Nullable tloc);

    • 描述:返回的值 是从1970-01-01 00:00:00 +0000 (UTC)以来的秒数

三、代码编写

  • client_data:

    • 成员变量:

      1. 地址
      2. 句柄
      3. 时间
  • util_timer:

    • 成员函数:

      1. 构造函数
    • 成员变量:

      1. 指向前一个节点的指针、指向后一个节点的指针
      2. 数据
      3. 回调函数
      4. 时间
  • sort_timer_lst:

    • 成员函数:

      1. 构造函数、析构函数
      2. 添加节点、调整节点、删除节点、调整节点位置
    • 成员变量:

      1. 头指针、尾指针
  • Utils:

这个类,其实严格来说不放到定时器类中的。他这个是吧一些要用的整合到一起了。

  • 对文件描述符设置非阻塞
  • 将内核事件表注册读事件,ET模式,选择开启EPOLLONESHOT
  • 信号处理函数
  • 设置信号函数
  • 定时处理任务,重新定时以不断触发SIGALRM信号

四、下期预告

http类的编写与解析

五、最后

求赞!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值