C语言只是一门编程的语言,是没有超时检测语法的

C语言虽然没有超时检测语言,但也是可以实现超时退出,超时返回、超时重启等功能的

用定时器判断是否超时

在程序循环中加入一个定时器,在规定的时候运行检测程序,超过时间不运行检测程序就可以了

看门狗(Watchdog)复位

可以开启单片机的Watchdog Timer,如果程序卡死,单片机就会重启。

在等待检测中,可以用break退出

在等待的循环中,可以用break退出

欢迎关注@电子产品设计方案,一起享受分享与学习的乐趣。

记得点赞和评论哦。


你的理解是错误的。

1,不存在什么专门的语法来检测超时。 所谓的超时一定是针对某种应用场景,如网路连接,文件IO等,不同的场景处理机制不同。

2,程序在执行操作时卡死,是因为程序是单线程的,单线程意味著在一个时间片内只能做一件事情。当线程忙著处理操作时,界面卡死是正常的。

为了解决界面卡死的问题,通常的做法是用多线程,即程序的主线程负责用户交互,使用单独的线程来执行耗时久的操作。这样用户界面即不会卡死,主线程也可以对操作线程进行控制,如检查操作执行了多长时间,是否需要终止线程等。


创建一个看门狗线程,每1秒吃掉所有监控信号量。被监控线程每1秒喂狗一次。


开个定时中断,定时++,超时了跳出循环就行了


多线程编程就好了啊,即使某个线程卡死也能强行退出。


防止死机的whatchdog机制是由软硬体配合来保证的;系统时钟,每隔一定时间产生一个信号;操作系统根据这个信号激发一个中断处理程序,以检测是否死机、处理异常。


对于等待超时,定义一个变数,在等待期间不断++,到达某一数值后就认为超时了,对于程序跑飞或卡死,用硬体看门门狗。 C语言很能锻炼编程技巧的。


多线程(包括中断)超时才会有问题,单线程只希望尽快看到结果,超时不会带来严重问题。

中断要尽快返回。

调试时可以设置一个变数,进入中断时加1,从中断返回时减1。查看这个变数就知道是什么否超时了。


计数器等于计时器。

可以通过计数来计时。


写程序段尽可能采用非阻塞分阶段分任务处理的方法,憋死的地方就会少一些


推荐阅读:
相关文章