gpt4 book ai didi

使用计时器精确地每秒调用一个函数?

转载 作者:太空宇宙 更新时间:2023-11-04 05:02:41 25 4
gpt4 key购买 nike

我需要每秒调用一个函数,因为我想根据每一秒存储数据,这样我就不会错过第二个? C中最好的方法是什么?

下面是 timer_create 方法的框架,这个方法够可靠吗?

#include <stdio.h>
#include <time.h>
#include <signal.h>

timer_t gTimerid;

void start_timer(void)
{
struct itimerspec value;

value.it_value.tv_sec = 1;
value.it_value.tv_nsec = 0;
value.it_interval.tv_sec = 1;
value.it_interval.tv_nsec = 0;

timer_create (CLOCK_REALTIME, NULL, &gTimerid);
timer_settime (gTimerid, 0, &value, NULL);
}

void stop_timer(void)
{
struct itimerspec value;

value.it_value.tv_sec = 0;
value.it_value.tv_nsec = 0;
value.it_interval.tv_sec = 0;
value.it_interval.tv_nsec = 0;

timer_settime (gTimerid, 0, &value, NULL);
}

void timer_callback(int sig)
{
printf(" Catched timer signal: %d ... !!\n", sig);
}

int main(int ac, char **av)
{
(void) signal(SIGALRM, timer_callback);
start_timer();
while(1);
}

最佳答案

在 Linux 和其他 POSIX 系统上,timer_create 是您要查找的函数。将计时器设置为通过信号传送,这将非常可靠。不要使用旧的 ualarmsetitimer api,它们已被弃用并且有各种丑陋的问题,除非您已经是这方面的专家,否则您可能不想进入这些问题实时 unix 的东西...

关于使用计时器精确地每秒调用一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8714016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com