加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
test_timerfd.cc 1.18 KB
一键复制 编辑 原始数据 按行查看 历史
#include<iostream>
#include<sys/timerfd.h>
#include<cassert>
#include<unistd.h>
#include<fcntl.h>
int main()
{
int timerfd = timerfd_create(CLOCK_MONOTONIC,TFD_CLOEXEC|TFD_NONBLOCK);
assert(timerfd!=-1);
struct itimerspec timeout;
//第一次超时时间间隔
timeout.it_value.tv_sec = 2; // 第一次超时为 3 s
timeout.it_value.tv_nsec = 0;
//第二次以及之后的超时时间间隔
timeout.it_interval.tv_sec = 1; // 往后每隔 1s 超时一次
timeout.it_interval.tv_nsec = 0;
int ret = timerfd_settime(timerfd,0,&timeout,NULL); //设置定时通知
assert(ret!=-1); //返回值为-1表示设置失败,但是一般是不会失败的,可以不用关心
int sec =0;
uint64_t times = 0;
while(1)
{
sleep(1);
sec++;
ret = read(timerfd,&times,sizeof times);
if(ret>=0)
{
std::cout<<"第"<<sec<<"秒触发了一次超时"<<std::endl;
}
}
// sleep(10);
// uint64_t times = 0;
// //十秒之后读取下超时的次数
// ret = read(timerfd,&times,sizeof times);
// assert(read>=0);
// std::cout<<"times:"<<times<<std::endl;
return 0;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化