这是linux下一个精确定时器的使用方法
#define READ_INTERVAL 40*1000000 static int timer_init() { int ret; struct sigevent sev; struct itimerspec its; sev.sigev_notify = SIGEV_THREAD; sev.sigev_notify_function = timer_func; sev.sigev_notify_attributes = NULL; ret = timer_create(CLOCK_REALTIME, &sev, &timerid); if (ret != 0) { ALOGE("%s: timer_create error!\n", __func__); return -1; } its.it_value.tv_sec = READ_INTERVAL / 1000000000; /* 注意这里的编程思想: 这样写如果要修改时间的只要修改宏 定 义 its.it_value.tv_nsec = READ_INTERVAL % 1000000000; 的值就可以了 READ_INTERVAL代表的是纳秒的值 its.it_interval.tv_sec = its.it_value.tv_sec; 用itimerspec来定时更加精确。 its.it_interval.tv_nsec = its.it_value.tv_nsec; */ ret = timer_settime(timerid, 0, &its, NULL); if (ret != 0) { ALOGE("%s: timer_settime error!\n", __func__); return -1; } return 0; } |
linux下一个定时器的使用方法
最新推荐文章于 2023-03-21 18:28:36 发布