gpt4 book ai didi

c# - 许多短命线程方法?

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:21 25 4
gpt4 key购买 nike

我有一个应用程序(永远运行的守护程序应用程序)必须管理物理设备(例如 RS485 设备)和系统内的应用程序之间的通信(请求和响应)——类似于许多应用程序要与之交谈的“通信层”硬件设备。

Applications_Send_Request -> Communication_Layer_Forwards_To_Devices -> Communication_Layer_Gets_Response -> Application_receives_response。

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

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

现在,这个线程将是短暂的 - 大约只有几毫秒到几秒。

我可能每秒收到数百个请求 - 因此应用程序正在创建大量短暂的线程并删除它们 - 永远持续不断地进行。

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

当像这样大量使用线程时,上述设计是否安全可靠。

最佳答案

使用 Windows thread pool为此,通过 System.Threading.ThreadPool 公开。

在 Windows 上手动启动和关闭线程的成本非常高。即使在空闲时,它们也会占用大量的用户和内核内存,并且维护起来非常重量级。

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

如果您只是让操作系统为您管理线程,您的程序将会更小、更快、更简单并且更易于维护。

关于c# - 许多短命线程方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33380914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com