定时任务(延时事件)处理(一)Linux定时器接口与管理

本文介绍了Linux中获取时间的函数,如time(0)和gettimeofday,以及线程安全的localtime_r。重点讨论了Linux定时器,包括timerfd_create等文件描述符方式的定时器,其支持select和poll等异步接口,适用于多进程和多线程环境。还对比了不同Linux定时器管理方式,并探讨了muduo、libco和brpc等网络库的定时器实现,如muduo的无锁设计和时间轮策略。
摘要由CSDN通过智能技术生成
Linux常用的时间相关函数

获取当前时间:
time(0) ------ time_t ------ 秒
gettimeofday ------ timeval ------ 微妙
可以认为这两个函数都是线程安全的,获取到的时间戳是不包括闰秒

获取当地时间:
localtime_r函数,_r后缀是线程安全的

定时器相关函数
timerfd_create timerfd_gettime timerfd_settime (改用文件描述符方式取代了信号)
关于定时器接口的演进参考文章:Linux 下定时器的实现方式分析

由于基于文件描述符,使得该接口可以支持 select(2),poll(2) 等异步接口,使得定时器的实现和使用更加的方便,更重要的是,支持 fork(2),exec(2) 这样多进程的语义,因此,可以用在多线程环境之中,它们的使用比 POSIX timer [ 2 ]更加的灵活,其根本原因在于定时器的管理统一到了 unix/linux 基本哲学之一 ---- “一切皆文件”之下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值