C語言只是一門編程的語言,是沒有超時檢測語法的

C語言雖然沒有超時檢測語言,但也是可以實現超時退出,超時返回、超時重啟等功能的

用定時器判斷是否超時

在程序循環中加入一個定時器,在規定的時候運行檢測程序,超過時間不運行檢測程序就可以了

看門狗(Watchdog)複位

可以開啟單片機的Watchdog Timer,如果程序卡死,單片機就會重啟。

在等待檢測中,可以用break退出

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

歡迎關注@電子產品設計方案,一起享受分享與學習的樂趣。

記得點贊和評論哦。


你的理解是錯誤的。

1,不存在什麼專門的語法來檢測超時。 所謂的超時一定是針對某種應用場景,如網路連接,文件IO等,不同的場景處理機制不同。

2,程序在執行操作時卡死,是因為程序是單線程的,單線程意味著在一個時間片內只能做一件事情。當線程忙著處理操作時,界面卡死是正常的。

為瞭解決界面卡死的問題,通常的做法是用多線程,即程序的主線程負責用戶交互,使用單獨的線程來執行耗時久的操作。這樣用戶界面即不會卡死,主線程也可以對操作線程進行控制,如檢查操作執行了多長時間,是否需要終止線程等。


創建一個看門狗線程,每1秒喫掉所有監控信號量。被監控線程每1秒餵狗一次。


開個定時中斷,定時++,超時了跳出循環就行了


多線程編程就好了啊,即使某個線程卡死也能強行退出。


防止死機的whatchdog機制是由軟硬體配合來保證的;系統時鐘,每隔一定時間產生一個信號;操作系統根據這個信號激發一個中斷處理程序,以檢測是否死機、處理異常。


對於等待超時,定義一個變數,在等待期間不斷++,到達某一數值後就認為超時了,對於程序跑飛或卡死,用硬體看門門狗。 C語言很能鍛煉編程技巧的。


多線程(包括中斷)超時才會有問題,單線程只希望儘快看到結果,超時不會帶來嚴重問題。

中斷要儘快返回。

調試時可以設置一個變數,進入中斷時加1,從中斷返回時減1。查看這個變數就知道是什麼否超時了。


計數器等於計時器。

可以通過計數來計時。


寫程序段儘可能採用非阻塞分階段分任務處理的方法,憋死的地方就會少一些


推薦閱讀:
相關文章