繁体   English   中英

C#多线程查询

[英]C# multi threading query

我正在尝试用C#编写一个程序,它将连接到大约400台计算机并检索一些信息,假设它检索每台计算机上运行的Web服务列表。 我假设我需要一个线程很好的应用程序,以便能够非常快速地从如此庞大的服务器中检索信息。 我对如何开始研究这个问题一无所知,你们能给我一个如何开始的先机!

谢谢!

我认为没有理由在主逻辑中使用线程。 使用异步API并将其回调安排到主线程。 这样你就可以获得异步的好处,但没有与线程相关的大部分困难。

如果您需要对数据执行的工作非常昂贵,那么您的逻辑代码中只需要多线程。 即便如此,您通常也可以使用无副作用的函数进行并行化。

看一下Task Parallel Library

特别是数据并行

如果你愿意,你也可以使用PLINQ

您还应该在多核CPU上并行执行线程以提高性能。

我最喜欢的主题参考如下 -

http://www.albahari.com/threading/

http://www.codeproject.com/KB/Parallel_Programming/NET4ParallelIntro.aspx

您在何处以及如何获取要查询的400台服务器的列表?

你经常需要这样做吗?

您可以使用Windows服务或安排调用您的软件的任务,并在其中您可以在服务器列表中执行foreach元素并使用线程队列/池在不同的线程中启动对此类服务器的调用,但是最大值为无论如何,你不会一起开始400个线程。

描述一下你的解决方案更好一点,我们看看你能做些什么:)

看看这个库: 任务并行库 与直接管理线程相比,您可以更有效地利用系统资源并更轻松地管理工作。

当您开始查询所有400台计算机时,可能会对服务器端产生相当大的影响。 但是你可以看看Parallel LINQ( PLINQ ),你可以在那里限制并行度

您也可以使用线程池来处理此问题,例如Task类。

创建手动线程可能不是一个好主意,因为它们不是高度可重用的并且需要创建大量的内存/ CPU

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM