Linux上定时器的实现
Linux上定时器的实现
方法1. 使用sleep或者usleep
这种方法很简单,这里就不具体描述,它的缺点也很明确:精度不够,特别是在系统负载比较大时,会发生超时现象。
方法2. 使用信号量SIGALRM + alarm()
alarm也称为闹钟函数,alarm()用来设置在经过参数seconds指定的秒数后传送信号SIGALRM给目前的进程。如果参数seconds为0,则之前设置的闹钟会被取消,并将剩下的时间返回。要注意的是,一个进程只能有一个闹钟时间,如果在调用alarm之前已设置过闹钟时间,则任何以前的闹钟时间都被新值所代替。
那么我们可以使用signal函数设定SIGALRM的处理函数,然后使用alarm定时发送SIGALRM来达到我们的目的。
这里只是简单的实现了一下,所以是无线循环定时,完善很容易。
这个方法很方便,实现也很简单,但是也有缺点,就是精度不能小于1秒。
方法3. select+多线程
原理很简单,利用select()方法的第5个参数,第一个参数设置为0,三个文件描述符集都设置为NULL,第5个参数为时间结构体,设置为我们想要定时的事件频率即可。
运行结果:
本文转自:小组14级成员--师毅
原文地址:
http://blog.csdn.net/to_be_better/article/details/59745026
(更多详细内容,点击左下角【阅读原文】)
- V神(Vitalik Buterin)希望以太社区基金实现炒作
- 天津:169家重点监测企业初一实现销售收入1.7亿元
- 绽放冬奥赛场,斯洛文尼亚实现奖牌突破
- 100多年前,杭州就有了\"地铁\"!这个地方实现轨交、公交双覆盖
- 银行存款方式你懂吗?怎么实现正确理财日入上百
- TLP 帮助我们的 Linux 机器节能省电 | Linux 中国
- 如何更改 Linux 控制台上的字体 | Linux 中国
- 哪个 Linux 内核版本是 “稳定的”? | Linux 中国
- 使用 TLS 加密保护 VNC 服务器的简单指南 | Linux 中国
- 如何列出所有的 Bash Shell 内置命令 | Linux 中国
