我正在尝试用C#编写一个程序,它将连接到大约400台计算机并检索一些信息,让我们说它检索每台计算机上运行的Web服务列表。 我假设我需要一个线程很好的应用程序,以便能够非常快速地从如此庞大的服务器中检索信息。我对如何开始研究这个问题一无所知,你们能给我一个如何开始的先机!
谢谢!
答案 0 :(得分:5)
我认为没有理由在主逻辑中使用线程。使用异步API并将其回调安排到主线程。这样你就可以获得异步的好处,但没有与线程相关的大部分困难。
如果您需要对数据执行的工作非常昂贵,那么您的逻辑代码中只需要多线程。即使这样,你通常也可以使用无副作用的函数进行并行化。
答案 1 :(得分:2)
答案 2 :(得分:1)
您还应该在多核CPU上并行执行线程以提高性能。
我最喜欢的主题参考文献如下 -
http://www.albahari.com/threading/
http://www.codeproject.com/KB/Parallel_Programming/NET4ParallelIntro.aspx
答案 3 :(得分:0)
在哪里以及如何获取要查询的400台服务器的列表?
你需要经常这样做吗?
您可以使用Windows服务或安排调用您的软件的任务,在其中您可以在服务器列表中执行foreach元素并使用线程队列/池在不同的线程中启动对此类服务器的调用,但是一个最大值,所以你无论如何都不会一起开始400个线程。
更好地描述您的解决方案,我们会看到您可以做的事情:)
答案 4 :(得分:0)
看看这个图书馆:Task Parallel Library。与直接管理线程相比,您可以更有效地利用系统资源并更轻松地管理工作。
答案 5 :(得分:0)
当您开始查询所有400台计算机时,可能会对服务器端产生相当大的影响。但您可以查看并行LINQ(PLINQ),您可以在其中限制degree of parallelism。
您也可以使用线程池来解决此问题,例如:一个Task课程。
创建手动线程可能不是一个好主意,因为它们不是高度可重用的并且需要创建大量的内存/ CPU