如何创建计时器?类似于 Visual Basic 中的计时器;您设置了一个间隔,如果启用了计时器,它会一直等到时间到。
我不想使用现有的库,因为我想知道它是如何工作的。
所以..我只是希望有人能解释我定时器是如何工作的,也许给我一个代码示例来创建我自己的代码 - 如果它不是太先进。
编辑:我想为 linux 系统创建一个。
下面是一个非常基本的例子,它将在 Linux 下运行。如果您查看手册页,signal您会发现它已被弃用,而支持sigaction. 重要的是不要忘记volatile,否则while循环可能不会根据优化而终止。还要注意SIGALRM一个高度共享的资源是如何被其他计时器设施使用的,而且只有一个。
程序将打印Waiting三秒钟,然后在打印Finally ...一次后退出。
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
volatile int mark = 0;
void trigger(int sig)
{
mark = 1;
}
int main(void)
{
signal(SIGALRM, trigger);
alarm(3);
while (!mark)
{
printf("Waiting\n");
}
printf("Finally ...\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)