在C中创建计时器

在C中创建计时器,c,timer,C,Timer,如何创建计时器?类似Visual Basic中的计时器;您可以设置一个时间间隔,如果计时器已启用,它将等待时间结束 我不想使用现有的库,因为我想知道它是如何工作的 所以。。我只是希望有人能给我解释一下定时器是如何工作的,也许能给我一个代码示例来创建我自己的——如果不是太高级的话 编辑: 我想为linux系统创建一个。下面是一个在linux下运行的非常基本的示例。如果您查看signal的手册页面,您会发现它已被弃用,取而代之的是sigaction。重要的是不要忘记volatile,否则while循

如何创建计时器?类似Visual Basic中的计时器;您可以设置一个时间间隔,如果计时器已启用,它将等待时间结束

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

所以。。我只是希望有人能给我解释一下定时器是如何工作的,也许能给我一个代码示例来创建我自己的——如果不是太高级的话

编辑:
我想为linux系统创建一个。下面是一个在linux下运行的非常基本的示例。如果您查看
signal
的手册页面,您会发现它已被弃用,取而代之的是
sigaction
。重要的是不要忘记
volatile
,否则
while
循环可能不会根据优化而终止。另请注意,
SIGALRM
是一个高度共享的资源,其他计时器设施可能会使用它,并且只有一个

程序将打印
等待
三秒钟,然后在打印
后退出…
一次

#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;
}
#包括
#包括
#包括
挥发性int标记=0;
无效触发器(int sig)
{
分数=1;
}
内部主(空)
{
信号(信号源、触发器);
警报(3);
而(!马克)
{
printf(“等待”);
}
printf(“最终…\n”);
返回0;
}
你可以这样做

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

int main() {
    printf("wait\n");
    sleep(3);
    printf("time elapsed\n");
    return 0;
}
#包括
#包括
int main(){
printf(“等待”);
睡眠(3);
printf(“经过的时间\n”);
返回0;
}

您的目标是哪个操作系统?您熟悉线程和/或进程吗?我不知道VisualBasic是如何做到这一点的,但是挂起和唤醒是在操作系统中实现的操作。如果你不想使用现有的库,你只需要进行“裸”操作系统调用——其实没有太多意义。我的目标->主要是linux,但我想为windows和linux创建一个。看起来有人需要学习事件驱动编程。并使用100%的CPU完成任务。这似乎值得否决。OP特别要求不要使用图书馆……他接受了答案,也许他对自己的要求不太确定。