c#什么是编码递归函数的有效方法

时间:2012-02-10 18:41:15

标签: asp.net c#-4.0 recursion c#-3.0

我正在构建一个高交易量系统,其核心具有递归功能。

简而言之,我想创建一个蜘蛛,它将转向并提取在页面链接中找到的URL,然后获取每个URL并继续执行某些操作。负载在短时间内可以成倍增加,因此我想尽最大努力使这些代码尽可能简化和高效。

我应该使用线程吗?如果是这样(逻辑是什么样的)

我正在使用最新的asp.net c#和VS2010与.net4,并希望新技术有一些简单的方法让我这样做,并隐藏所有复杂性,同时有效和​​超快地处理逻辑。 / p>

2 个答案:

答案 0 :(得分:2)

你不应该为蜘蛛使用递归。您应该有一个分析页面的任务,并执行您要对该页面执行的任何操作。如果它找到了链接,它应该将它添加到链接队列中(确保你不会多次处理一个链接,否则你将最终得到一个无限循环)。主处理器只会通过队列并处理链接。

答案 1 :(得分:1)

.NET的任务并行库为您的问题提供了一个很好的解决方案。有关详细信息,请参阅this MSDN Magazine article

TPL旨在完成并行执行,但为您处理线程。它还可以让您轻松等待任务完成,并在完成另一组任务后运行一项任务,等等。

在您的情况下,这意味着“父”将为文档中的每个链接启动任务,然后可以在必要时等待子任务完成。子任务可以递归地启动子任务等。无需担心线程。