【发布时间】:2017-12-10 07:16:38
【问题描述】:
我有一个树结构,为此我正在使用这个类:
class Node
{
long IdNode;
List<Node> Childs;
string path;
Data data;
}
路径是由“.”分隔的IdNode,因此Node的路径是“IdParent.IdNode”等等。所以要设置节点的路径,我需要父节点的路径。
我有这个方法:
public setPath(Node paramParentNode)
{
this.path = paramParentNode.Path + "." + this.IDNode;
foreach(Node iteratorNode in this.Childs)
{
iteratorNode.setPath(this);
}
}
这是一个连续版本。但我在考虑如何并行实现,类似这样:
public setPathMt(Node paramParentNode)
{
this.path = paramParentNode.Path + "." + this.IDNode;
Parallel.Foreach(this.Childs,
(iteratorNode) =>
{
iteratorNode.SetPathMt(this);
}
);
}
但我不知道这是否正确,因为我不知道如何等待方法的递归调用,我的意思是,我如何知道递归方法何时完成。
实现多线程递归方法的最佳方法是什么?
谢谢。
【问题讨论】:
-
为什么要并行化这样的事情呢?在顺序版本中用点连接 2 个字符串应该不会花费太多时间?
标签: c# .net multithreading task-parallel-library parallel.foreach