簡體   English   中英

許多短期線程方法?

[英]Many short-lived threads approach?

我有一個應用程序(永遠運行守護程序應用程序),它必須管理物理設備(例如 RS485 設備)和系統內應用程序之間的通信(請求和響應)——類似於許多應用程序與硬件設備對話的“通信層”。

Applications_Send_Request -> Communication_Layer_Forwards_To_Devices -> Communication_Layer_Gets_Response -> Application_receives_response。

我將請求轉發到設備並獲得響應的部分可以是異步作業。

我打算創建一個線程,它將在應用程序接受其他請求的后台執行此操作。

現在,這個線程將是短暫的——大約只有幾毫秒到幾秒。

我每秒可能會收到數百個請求 - 因此應用程序正在創建許多短期線程並刪除它們 - 永遠不斷地這樣做。

關注點: 1 - 創建數千個線程(盡管它們的生命周期很短)。 2 - 應用程序的運行時間很長 - 永遠運行。

當像這樣大量使用線程時,上述設計是否可以且安全。

為此使用Windows 線程池,通過System.Threading.ThreadPool公開。

Windows 上的線程手動上下旋轉非常昂貴。 即使在空閑時,它們也會占用大量用戶和內核內存,並且維護起來非常繁重。

Windows 提供了線程池 API,專門用來解決在不同線程上運行大量獨立的短期並行任務的問題,這樣程序就不需要通過創建自己的程序來使系統過載。 可以在這里找到關於選擇線程池的非常好的討論: https : //stackoverflow.com/a/230023

如果您只是讓操作系統為您管理線程,您的程序將更小、更快、更簡單且更易於維護。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM