如何创建计时器?一个类似于 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;
}
你可以这样做
#include <stdio.h>
#include <unistd.h>
int main() {
printf("wait\n");
sleep(3);
printf("time elapsed\n");
return 0;
}