迴圈超時 timeout

2021-09-13 17:41:02 字數 1305 閱讀 9070

使用合作式排程器時,任務執行時間《時標時間,使用迴圈超時和硬體超時的模式能保證,如果任務不在規定的時間內完成,就中止該任務。

1.迴圈超時

例1,某微控制器帶有ad模組,手冊應用有以下**:

while((adcon&adci)==0)

這樣的**不可靠,可導致系統被掛起

初始化不正確,不能確定數模轉換被執行

輸入電壓過高,根本不執行

沒有正確的配置adcon和adci,不按要求進行

超時迴圈提供了乙個簡單的辦法,保證沒有函式被掛起

建立思路

unsigned integer time_loop=0;

while(time_loop);

當time_loop到達最大值溢位時,程式將繼續向下執行

或者改進下上面**

while((adcon&adci==0)&&(time_loop!=0)

time_loop++;

通過改變time_loop初始值改變超時時間

eg.    timeoutl.h

#define loop_timeout_init_001ms  65435

#define loop_timeout_init_010ms  64535

#define loop_timeout_init_500ms  14535

特點:不使用定時器,極小的成本改善可靠性和安全性,cpu和儲存器開銷很小

eg:main.c

#include "main.h"

#include "timeoutl.h"

void test_1ms(void)

void test_10ms(void)

void test_500ms(void)

void main(void)

while(1)

test_1ms(void)

test_10ms(void)

test_500ms(void)

void test_1ms(void)

tword timeout_loop=loop_timeout_init_001ms;

while(++timeout_loop!=0)

void test_10ms(void)

tword timeout_loop=loop_timeout_init_010ms;

while(++timeout_loop!=0)

void test_500ms(void)

tword timeout_loop=loop_timeout_init_500ms;

while(++timeout_loop!=0)

nginx優化 timeout超時配置

nginx在保持著與客戶端的連線時,要消耗cpu 記憶體 網路等資源,如果能在超出一定時間後自動斷開連線,則可以及時釋放資源,起到優化效能 提高效率的作用 對應的原始碼可以訪問這裡獲取 1,keepalive的作用 http 的 keepalive 模式 webserver 在處理完乙個請求後保持這...

dubbo配置timeout超時時間

在dubbo的provider和consumer的配置檔案中,如果都配置了timeout的超時時間,dubbo預設以consumer中配置的時間為準。provider.xml的配置 4000 retries 0 inte ce com.dingding.tms.bms.service.billing...

pip超時問題 timeout 的解決方法

首先說一下網速慢的問題,這個問題可以有兩種方法解決。1.讓pip有點耐心,增加等待時間,方法是修改pip配置檔案,方法如下 3.通過修改配置檔案增加映象站點。sudo vi pip pip.config linux or macos global timeout 6000 index url tru...