ntp導致其他執行緒卡頓原因總結

2021-08-03 15:02:36 字數 615 閱讀 7517

都知道呼叫system命令無法獲取返回值,所以很多時候採用popen來獲取,但是有乙個問題popen+fgets獲取返回值的時候,本身popen

ntp部分**如下:

void* ntpdate::ntpsyncproc(void* args)

else

}if (update == false)

}pclose(freport);

}usleep(mperiod * 1000 * 1000);

} }return null;

}

popen怎麼使用的不解釋了,說出關鍵部分:1.首先是將fgets阻塞模式改為了非阻塞模式使用了fcntl()函式,但是測試的過程發現由於非阻塞模式fgets還未獲得資料就已經拋棄了,所以加了usleep睡眠10 s來獲取,因為ntp返回值獲得測試時大概是6s左右,所以設定10s保證能100%獲得,當然可以設定更大,因為呼叫popen就已經執行了system命令,所以對於校時並不影響。2.另外也可以採用select模式改為非阻塞模式,**就不貼了。3.此外還可以採用「&」後台執行(網上說"&"其實已經是非阻塞模式了,具體對不對不是很清楚),反正採用以上三種方式都可以解決ntp執行緒卡頓原因,以上三種方式我都試過。

update layer tree導致頁面卡頓

前因 今天檢查乙個vue頁面問題,就是在切換tab時候 某些win10電腦 頁面會卡頓一段很長的時間,短則3秒,長則十幾秒,這個體驗非常糟糕,於是我著手尋找其中原因。概況 這個vue頁面的元素非常多,主要分為六個tab內容,切換tab也只是控制tab內容的顯隱。按道理這是非常簡單的行為,不應該出現卡...

其他執行緒訪問UI執行緒

final progressbar pb new progressbar shell,swt.none pb.setbounds 68,153,365,17 final int minnimum pb.getminimum final int maximum pb.getmaximum runnab...

NFS導致df h卡主解

nfs服務意外斷開,導致掛載的客戶端 df th 命令無法使用,及掛載目錄無法 cd ls 解決思路 1 強制取消客戶端掛載 2 重啟nfs服務,客戶端和服務端都需要重啟 3 重新掛載nfs 處理方法 1 強制取消客戶端掛載 cat etc mtab umount lf mnt 2 重啟nfs服務,...