我想编写一个 C 程序,它会定期执行一些任务(比如,在控制台上打印一些东西)。
我已经使用 nanosleep 实现了它,如下所示。每 500 毫秒调用一次函数“func”。
#include <stdio.h>
#include <time.h>
void func(void);
int main()
{
struct timespec mytimespec;
mytimespec.tv_sec = 0;
mytimespec.tv_nsec = 500000000; /* 500 ms */
while(1)
{
func();
nanosleep(&mytimespec,NULL);
}
return 0;
}
void func(void)
{
printf("This would be printed periodically\n");
}
以上工作正常。但是我有一些疑问:-
如果有多个线程并且一个线程依赖于
nanosleep
执行周期性任务,它会准确工作吗?有没有办法在linux中产生一个周期性线程?或者,使用一些计时器回调?