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