许多短命线程接近

本文关键字:接近 线程 许多短 | 更新日期: 2023-09-27 18:19:36

我有一个应用程序(永远运行Daemon应用程序),它必须管理物理设备(例如RS485设备)和系统内应用程序之间的通信(请求和响应),这就像是许多应用程序与硬件设备通信的"通信层"。

Applications_Send_Request->Communication_Layer_Forwards_To_Devices->Communication''uLayer_Gets_Response->Application_receives_Response。

我将请求转发到设备并获得响应的部分可以是异步作业。

我计划创建一个线程,在应用程序接受其他请求的后台执行此操作。

现在,这个线程将是短暂的——大约几毫秒到几秒钟。

我可能每秒都会收到几百个请求,所以应用程序会创建很多短时间的线程并将其删除,这样做会一直持续下去。

关注点:1-创建数千个线程(尽管它们的寿命很短)。2-应用程序的运行时间非常长-永远运行。

当线程像这样大量使用时,上面的设计可以安全吗。

许多短命线程接近

为此使用Windows线程池,通过System.Threading.ThreadPool公开。

Windows上的线程手动上下旋转的成本非常高。即使在空闲时,它们也会占用大量的用户和内核内存,而且维护起来相当繁重。

Windows提供了线程池API,专门用于解决在不同线程上运行大量独立的、短暂的并行任务的问题,这样程序就不需要通过创建自己的线程来过载系统。关于选择线程池的一个非常好的讨论可以在这里找到:https://stackoverflow.com/a/230023

如果你只需让操作系统为你管理线程,你的程序就会更小、更快、更不复杂、更容易维护。