Administrator
发布于 2023-12-09 / 0 阅读 / 0 评论 / 0 点赞

c++ 定时器

C/C++项目实战(epoll和定时器)_哔哩哔哩_bilibili

0:32:00

思考

  1. 延时队列怎么实现?

  2. 非活跃的连接自动断开

  3. 主从节点的心跳

  4. 30未付款的订单怎么取消

信号

  1. alarm()秒级计时

  2. settitimer()微妙

  3. signal信号

‍‌⁢‍​‌‌⁣⁢⁣⁢‬‍‌​⁢‬‍​⁡‌​‌‬​‌‬⁡​⁡⁣​‌‌⁤⁢⁤⁤⁢⁢​​‬‬‍‌⁡C++定时器 - 飞书云文档 (feishu.cn)

思考

  1. 延时队列如何实现?

  2. 非活跃的连接自动断开如何实现?

  3. 主从节点随机心跳检测如何实现?

  4. 下单后30分钟内未付款自动取消订单如何实现?

大纲

  1. 信号

    1. alarm()秒级计时

    2. setitimer()微妙级周期计时

    3. signal()注册信号

  2. 高性能定时器

    1. 时间轮

      • 原理

    2. 最小堆

      • 原理

      • 代码实现

  3. 源码解读

    1. Redis

      • usUntilEarliestTimer()

    2. Nginx

      • ngx_event_find_timer()红黑树

    3. Skynet

    4. Netty

      • 时间轮

    5. Libevent

      • 最小堆

    6. Linux

      • 时间轮

代码仓库

参考文献


评论