2014-09-24 68 views
0

我不確定這是否是一個純粹的計算器相關問題。這與一般的設計實踐有關。因爲我無法想到另一個相關的堆棧交換站點,所以在這裏發佈它。爲什麼超時值太小?

在將異步調用轉換爲同步調用的一般設計實踐中,我們使用超時並等待結果。雖然從響應的角度來看,這可能不是一個好的做法,但它確實使執行更容易。

我見過很多這樣的實現,並且經常注意到開發人員往往會給出非常小的超時值。我可以理解,當他們這樣做時,人們可能需要一個響應系統。但是我看到的很多這些應用程序都非常關鍵,數據丟失非常嚴重。因此,等待更多並試圖獲得儘可能多的數據總是更好,而不是提前超時並向用戶發出錯誤消息。現在,服務器無法提供數據或客戶端無法訪問服務器等情況很少發生。在這些情況下,我預計這種等待會有很長一段時間。畢竟,這些暫停並不意味着等待一定會持續到給定的超時值;超時值只是一個上限。所以,我一直在爭論更高的價值。但是我發現在越來越多的地方使用低值,現在我感到困惑,如果這種做法中還有別的東西我不明白。

所以,我的問題是:除了需要響應以實現等待的非常短的超時之外,是否有任何爭論?

+0

你究竟認爲一個非常小的超時是什麼? – svick 2014-09-24 11:53:10

+0

@svick:這取決於具體情況。我只想知道決定超時的一般權衡。什麼阻止人們使用大時間? – PermanentGuest 2014-09-24 11:58:19

回答

2

一如既往,正確的決定取決於現實生活中的數據。 超時時間應與通常成功完成操作所需的時間成比例。

例如,發送UDP消息可能需要1到50毫秒,所以100毫秒的超時比合理更合理,但通過網絡複製文件可能需要幾分鐘或更長時間,因此100毫秒超時是可笑的。

短期和長期超時都有優點和缺點,所以這是一個折衷。如上所述,更長的超時使用更多的資源(任務,線程,內存等)來完成相同數量的工作,而短暫超時可能會導致數據丟失。

總之,您需要設置一個可配置的超時,這聽起來合理,然後確定是否在生產中暫停了太多操作或者相反地進行校準。

+1

感謝您的答案@ l3arnon – PermanentGuest 2014-09-30 07:54:03

+0

@PermanentGuest肯定,隨時。 – i3arnon 2014-09-30 09:06:29