(可以跳過這部分只是對下面的代碼的解釋,我的問題在代碼塊下)加/減浮動/ ints linux C
嗨。我試圖根據linux計算機使用多少帶寬來限制循環週期。我正在讀取/ proc/net/dev一次,並跟蹤2個變量中傳輸的字節。一次是最近一次檢查,另一次是最近一次。從那裏減去最近的一個來計算在1秒內發送了多少個字節。
從那裏我有變量max_throttle,throttle,max_speed和sleepp。
這個想法是根據使用的帶寬增加或減少sleepp。帶寬越少,延遲越低,時間越長。我現在不得不面對浮點數和整數的問題如果我將所有變量設置爲整數,max_throttle變爲0總是不管我設置其他人爲何,即使我初始化它們。
即使我的if語句中顯示「如果sleepp小於0則返回0」,它會持續更深入更深入的底片,然後在使用0帶寬的情況下在-540之間進行平衡。
和if(ii & 0x40)用於速度和使用控制。在我的應用程序中將不會有1秒的睡眠時間,所以這段代碼允許我限制每20-30次迭代一次就改變一次睡眠。雖然即時通訊也有一個問題,在2X迭代之後,當它觸發它時,它會繼續觸發每次迭代,而不是隻有一次爲真,然後在20-30次迭代後再次爲真。
編輯::簡單的測試投我的變量問題。
#include <stdio.h>
int main()
{
int max_t, max_s, throttle;
max_s = 400;
throttle = 90;
max_t = max_s * (throttle/100);
printf("max throttle:%d\n", max_t);
return 0;
}
請創建一個更簡單的測試用例,最好不超過10行。所有與'fopen'和'sleep'等有關的東西都可能是不相關的,應該刪除。 – 2012-03-04 18:05:29
完成。添加了一個更簡單的測試用例。 – 2012-03-04 18:16:23
你爲什麼分配'\ 0'? – 2012-03-04 18:16:27