我有一個應用程序(永遠運行守護進程應用程序),它必須管理物理設備(例如RS485設備)和系統內應用程序之間的通信(請求和響應) - 就像許多應用程序與硬件通信的「通信層」設備。很多短命線程的方法?
Applications_Send_Request - > Communication_Layer_Forwards_To_Devices - > Communication_Layer_Gets_Response - > Application_receives_response。
其中I FWD所述請求的裝置和獲得響應可以是異步工作的一部分。
我打算創建一個線程,這將在應用程序接受其他請求的後臺執行此操作。
現在,這個線程將是短暫的 - 大約幾毫秒到幾秒鐘。
我可能會得到幾百請求的每一秒 - 這樣的應用程序創建大量短命的線程和刪除它們 - 永遠持續這樣做。
關注: 1 - 創建數千個線程(雖然他們很短暫)。 2 - 應用程序運行時間非常長 - 可以永久運行。
上述設計是否正常並且安全,當線程使用非常嚴重時,就像這樣。
你可以使用線程池 –
你的想法基本上就是一個線程池。如果您使用「任務」或「任務」安排您的工作,那麼也將使用ThreadPool。你可以在這裏查看MSDN文檔:https://msdn.microsoft.com/en-us/library/system.threading.threadpool(v=vs.110).aspx –
vesan
查看這篇關於創建CustomThreadPool的文章。這是非常詳細的,但是,類似的模式用於需要維持恆定操作狀態的windows服務。 http://www.codeproject.com/Articles/548865/Create-a-Custom-ThreadPool-in-Csharp –