我正在为计算机集群编写一个监控程序,它可以在 LCD 屏幕上显示大量数据。作为显示的一部分,我想要一个显示当前日期、小时、分钟和秒的数字时钟。问题是,我有一堆任务在一个大循环中进行(ping 请求、A/D 转换、文件扫描),我只是没有时间在循环中更新时钟。
我在 Linux (Debian) 下使用 C。
关于我应该如何解决这个问题有什么建议吗?我在想也许可以使用中断来每秒更新一次时钟,但是在 Linux 下如何做到这一点呢?我以前只真正使用过微 Controller 的中断。
最佳答案
您需要运行一些并行代码来执行此操作。对于这个应用程序,我能想到的最好的方法是使用线程,使用 pthread_create()
和这样的函数:
void * clock_routine(void * args) {
while(1) {
// update clock
}
}
在你的 main 函数中类似地调用它:
pthread_t clock_tid; // Clock thread handle
int rc = pthread_create(&clock_tid, NULL, clock_routine, NULL);
并使用-lpthread
标志编译文件。
clock_routine
中的代码将与您的其他代码并行运行,并且由于它只是一个时钟,因此您无需处理任何依赖/同步问题。
P.S.:(有点没用,但这里是:)我不确定,但是在你的 while(1)
循环中使用 sleep
函数, sleep 几微秒,“可能”改进您的程序,因为您不需要“实时”时钟更新,而只需要几微秒的精度。像这样不断更新时钟,“可能”被认为是忙等待。如果有人对此有更多了解,请纠正我。
关于c - C 中的数字时钟程序 - 使用中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24497286/