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)
在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定期捕获计时器.