C语言没有超时检测语法,有时候程序就卡死了,如何自己实现超时检测功能呢?
C语言只是一门编程的语言,是没有超时检测语法的
C语言虽然没有超时检测语言,但也是可以实现超时退出,超时返回、超时重启等功能的
用定时器判断是否超时在程序循环中加入一个定时器,在规定的时候运行检测程序,超过时间不运行检测程序就可以了
看门狗(Watchdog)复位可以开启单片机的Watchdog Timer,如果程序卡死,单片机就会重启。
在等待检测中,可以用break退出
在等待的循环中,可以用break退出
欢迎关注@电子产品设计方案,一起享受分享与学习的乐趣。记得点赞和评论哦。
你的理解是错误的。
1,不存在什么专门的语法来检测超时。 所谓的超时一定是针对某种应用场景,如网路连接,文件IO等,不同的场景处理机制不同。
2,程序在执行操作时卡死,是因为程序是单线程的,单线程意味著在一个时间片内只能做一件事情。当线程忙著处理操作时,界面卡死是正常的。
为了解决界面卡死的问题,通常的做法是用多线程,即程序的主线程负责用户交互,使用单独的线程来执行耗时久的操作。这样用户界面即不会卡死,主线程也可以对操作线程进行控制,如检查操作执行了多长时间,是否需要终止线程等。
创建一个看门狗线程,每1秒吃掉所有监控信号量。被监控线程每1秒喂狗一次。
开个定时中断,定时++,超时了跳出循环就行了
多线程编程就好了啊,即使某个线程卡死也能强行退出。
防止死机的whatchdog机制是由软硬体配合来保证的;系统时钟,每隔一定时间产生一个信号;操作系统根据这个信号激发一个中断处理程序,以检测是否死机、处理异常。
对于等待超时,定义一个变数,在等待期间不断++,到达某一数值后就认为超时了,对于程序跑飞或卡死,用硬体看门门狗。 C语言很能锻炼编程技巧的。
多线程(包括中断)超时才会有问题,单线程只希望尽快看到结果,超时不会带来严重问题。
中断要尽快返回。
调试时可以设置一个变数,进入中断时加1,从中断返回时减1。查看这个变数就知道是什么否超时了。
计数器等于计时器。
可以通过计数来计时。
写程序段尽可能采用非阻塞分阶段分任务处理的方法,憋死的地方就会少一些
推荐阅读: