我將使用「進程」來指代將要並行發生的工作,而「入隊」指的是將用來啓動該進程的任何進程(無論是Task.Run,ThreadPool.QUWI,new Thread()... whatever)。保證並行線程/任務/任務的立即啓動
我們有一個性能敏感的程序,產生多個並行進程來收集數據。
我們遇到了產卵問題,即進程沒有立即開始。
具體來說,如果我們準備一個進程,啓動一個計時器,將進程排入隊列,並檢查計時器作爲進程中的第一個動作...然後我們看到時間延遲偶爾會延伸到100s甚至1000s毫秒。
鑑於該過程本身應該只運行3-10秒,排隊和激活過程之間有2秒的延遲是一個主要問題。
= - = - = - = - = - = - = - = - = - = - = - = - = - = - =
目前我們的實現開始使用TP.QUWI,然後我們繼續前進使用Task.Run。 我們最初的調查將我們引向Threadpool使用的線程創建策略,並使用ThreadPool.SetMinThreads(),所以我們正在追求這個角度,看看是否能完全解決問題。
但是如果我們的目標是在排隊之後立即啓動,那麼我們應該考慮另一種更改/方法嗎?
請問您的應用程序中使用'ThreadPool'廣泛適用於其他對時間不敏感的「過程」?爲什麼時間對您來說如此重要? – svick
我不明白問題,@svick? 是的,我們也使用ThreadPool來處理一些不是' t在表演關鍵拍拍中hs,但我沒有看到相關性。 而且就像我說的...該程序對性能非常敏感...我不明白爲什麼這個原因是真的會有影響嗎? – Brondahl