C中的循环/计时器

jar*_*ryd 8 c linux loops timer

如何在C中创建计时器?

我想要一段代码来连续从gps解析器输出中获取数据.

有没有好的图书馆或自己写的?

Mar*_*vac 16

最简单的方法:

#include <pthread.h>

void *do_smth_periodically(void *data)
{
  int interval = *(int *)data;
  for (;;) {
    do_smth();
    usleep(interval);
  }
}

int main()
{
  pthread_t thread;
  int interval = 5000;

  pthread_create(&thread, NULL, do_smth_periodically, &interval)

  ...
}
Run Code Online (Sandbox Code Playgroud)


Tho*_*son 7

在POSIX系统上,您可以创建(并捕获)警报.报警很简单,但会在几秒钟内完成.如果您需要比秒更精细的分辨率,请使用setitimer.

struct itimerval tv;
tv.it_interval.tv_sec = 0;
tv.it_interval.tv_usec = 100000;  // when timer expires, reset to 100ms
tv.it_value.tv_sec = 0;
tv.it_value.tv_usec = 100000;   // 100 ms == 100000 us
setitimer(ITIMER_REAL, &tv, NULL);
Run Code Online (Sandbox Code Playgroud)

并通过设置sigaction定期捕获计时器.