定时休眠 linux,Linux中的定时器与休眠

本文最后更新于2017年8月5日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

=Start=

缘由:

学习需要

正文:

参考解答:

在 2.4 的内核中,并没有提供 POSIX timer 的支持,要在进程环境中支持多个定时器,只能自己来实现,好在 Linux 提供了 setitimer(2) 的接口。它是一个具有间隔功能的定时器 (interval timer),但如果想在进程环境中支持多个计时器,不得不自己来管理所有的计时器。

#include

int setitimer(int which, const struct itimerval *new_value,struct itimerval *old_value);

Linux 自 2.6 开始,已经开始支持 POSIX timer 所定义的定时器,它主要由下面的接口构成 :

#include

#include

timer_create()

timer_settime()

timer_gettime()

timer_delete()

Linux 提供了基于文件描述符的相关定时器接口:

#include

int timerfd_create(int clockid, int flags);

int timerfd_settime(int fd, int flags, const struct itimerspec *new_value, struct itimerspec *old_value);

int timerfd_gettime(int fd, struct itimerspec *curr_value);

除了以上3种Linux原生提供的计时器,我们还可以通过一些其它方法来达到类似的目的:

用 sleep/usleep/select 函数让进程睡眠一段时间,使用alarm定时发出一个信号,然后用signal/sigaction函数接收信号并进行特定处理;

还有那就是用 gettimeofday/difftime 等自己来计算时间间隔,然后时间到了就执行某一任务,但是这种方法效率低,所以不常用。

参考链接:

=END=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值