我正在處理請求超時機制。我最初的做法是爲每個請求創建一個System.Threading.Timer。併發請求的數量可以擴展到數千。System.Threading.Timer對於數千個併發定時器是否足夠高效?
我想知道是否應該創建一個TimeoutScheduler,它只能在內部使用一個計時器,而不是每個請求都有一個計時器。
任何知道System.Threading.Timer內部的人都會給我一些關於TimeoutScheduler是否是一個好主意或者它只會嘗試優化已經足夠高效的東西的見解。
注意:對於我的情況,計時器精度並不重要。
(我做了一些System.Threading.Timer性能測試與很多併發定時器。它似乎很好地擴展,但我不知道這是否會放不必要的壓力在真實系統)
Raymond Chen的文章描述了一種不同類型的計時器。 – SLaks 2010-03-03 21:32:56
@SLaks:Raymond Chen的文章沒有描述任何特定種類的計時器。他最後提到了Windows Forms計時器,並且我向你保證,我很清楚它們的區別,但**所有** .NET計時器都包含Windows計時器,並且都受到相同的警告。 – Aaronaught 2010-03-03 22:42:46
實際上,Raymond Chen的文章描述了由SetTimer創建的定時器。 System.Threading.Timer實際上是一個定時器隊列定時器(http://msdn.microsoft.com/en-us/library/ms686796(v=VS.85).aspx),它基本上是一個單獨的定時器,一個確定何時觸發下一個事件的有效機制。 – 2010-09-02 23:58:04