我正在为计算机集群编写监控程序,在LCD屏幕上显示大量数据。作为显示器的一部分,我希望有一个数字时钟运行显示当前日期,小时,分钟和秒。问题是,我有一大堆任务在一个大循环(ping请求,A / D转换,文件扫描)中进行,我只是没有时间在循环期间更新时钟。
我在Linux下使用C(Debian)。
有关如何解决此问题的任何建议?我在考虑每秒钟可能会使用一个中断来更新时钟,但是如何在Linux下进行更新呢?我现在才真正使用微控制器中断。
答案 0 :(得分:0)
您需要运行一些并行代码才能执行此操作。对于这个应用程序,我能想到的最好的方法是使用pthread_create()
使用带有这样功能的线程:
void * clock_routine(void * args) {
while(1) {
// update clock
}
}
在您的主要功能中将其与此类似地调用:
pthread_t clock_tid; // Clock thread handle
int rc = pthread_create(&clock_tid, NULL, clock_routine, NULL);
使用-lpthread
标志编译文件。
clock_routine
中的代码将与您的其他代码并行运行,并且由于它只是一个时钟,因此您不会遇到任何依赖/同步问题。
PS :(有点无用,但这里有:)我不确定,但在sleep
循环中使用while(1)
函数,睡眠几微秒,&#34 ;可能"改善您的计划,因为您不需要"真实"时钟更新,但只有几微秒的准确性。像这样不断更新时钟,"可能"被认为是忙碌的等待。如果有人对此有更多了解,请纠正我。