2

如何创建计时器?一个类似于 Visual Basic 中的计时器;您设置了一个间隔,如果启用了计时器,它会一直等到时间到。

我不想使用现有的库,因为我想知道它是如何工作的。

所以..我只是希望有人可以向我解释计时器是如何工作的,也许可以给我一个代码示例来创建我自己的 - 如果它不是太先进的话。

编辑:我想为 linux 系统创建一个。

4

2 回答 2

5

以下是一个非常基本的示例,它将在 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;
}
于 2013-03-11T21:19:02.423 回答
4

你可以这样做

#include <stdio.h>
#include <unistd.h>

int main() {
    printf("wait\n");
    sleep(3);
    printf("time elapsed\n");
    return 0;
}
于 2013-03-11T21:38:01.393 回答