這是this programmers question的兄弟問題。在ASP.NET中使用線程是否存在任何非明顯的危險?
簡而言之,我們正在考慮推出一些支持用戶請求的工作,將其「正確地」推送到後臺。如果我們走這條服務路線,這個相關問題給了我很多想法,但並沒有真正提供任何令人信服的論據來解釋爲什麼,我們應該如此。
我承認,對我來說,能夠做的
WorkQueue.Push(delegate(object context) { ... });
道德相當於是真的令人信服的,所以如果它只是一個有點困難(而不是固有不可行),我傾向於去與後臺線程方法。
因此,與後臺線程我知道的問題(在應用程序池的情況下):
- 他們可以在任何時候因模具程序池被回收
- 解決方案:跟蹤正在執行任務時,因此它可以重新運行*應需要
- 的ThreadPool一個新的線程來傳入的HTTP響應查詢,因此使用它可以餓死IIS
- 解決方案:構建我們自己的線程池,並限制線程數量。
我的問題是,我缺少什麼,如果有什麼? ASP.NET中的後臺線程還有什麼問題?
*問題中的任務已經安全地重新運行,所以這不是問題。
ǂ假設我們沒有做任何愚蠢的事情,比如在後臺線程中拋出異常。
是不是線程的大多數'危險'非明顯? – 2010-10-22 05:15:33
@Mitch - 我正在尋找那些ASP.NET特有的。那些行人的危險現在可以忽略不計,:) – 2010-10-22 05:16:54