gpt4 book ai didi

c# - 创建大量 C# 线程的最佳模式

转载 作者:行者123 更新时间:2023-12-03 13:22:31 24 4
gpt4 key购买 nike

我们正在实现一个需要与遗留系统建立大量套接字连接的 C# 应用程序。我们将(可能)使用第 3 方组件来完成围绕终端仿真和数据抓取的繁重工作。我们现在拥有核心功能,现在我们需要扩展它。

在高峰时期,这可能是数千个并发连接 - 也就是需要打开的线程(甚至每年数万次)。这些连接主要处于空闲状态(除了定期握手之外没有流量)几分钟(或几小时),直到遗留系统“触发一个我们关心的事件”,然后我们从这个事件中抓取一些数据,执行一些工作流,然后等待下一个事件。池化没有任何值(value)(据我们所知),因为线程很少需要重用。

我们正在寻找任何有助于有效使用这么多线程的良好模式或工具。在高端服务器硬件上运行不是问题,但如果可能的话,我们确实需要将应用程序限制在几台服务器上。

在我们的测试中,创建一个新线程并初始化 3rd 方控件最初似乎使用了大量 CPU,但随后下降到接近于零。内存使用似乎约为 800Megs/1000 个线程

有什么比创建和启动所需的线程数更好/更有效的方法吗?

PS - 是的,我们知道创建这么多线程是不好的,但由于我们无法控制遗留应用程序,这似乎是我们唯一的选择。多个事件无法选择单个套接字/连接。

感谢您的任何帮助或指点!
货车

最佳答案

你这样说:

There is no value in pooling (as far as we can tell) since threads will rarely need to be reused.



但是你这样说:

Is there anything better / more efficient than just creating and starting the number of threads needed?



为什么会出现差异?您是否关心您正在创建的线程数?线程池是处理大量空闲连接的正确方法。一些繁忙的线程可以轻松处理许多空闲连接,并且所需的资源更少。

关于c# - 创建大量 C# 线程的最佳模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1344693/

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