私はツリー構造を持って、そのために私はこのクラスを使用しています:「」再帰的メソッドで並列処理を実装する方法は?
class Node
{
long IdNode;
List<Node> Childs;
string path;
Data data;
}
をパスすることによってspearated IdNodeので、ノードのパスはように 『IdParent.IdNode』です。したがって、ノードのパスを設定するには、親のパスが必要です。
私はこの方法を持っている:
public setPath(Node paramParentNode)
{
this.path = paramParentNode.Path + "." + this.IDNode;
foreach(Node iteratorNode in this.Childs)
{
iteratorNode.setPath(this);
}
}
これはsecuentialバージョンです。しかし、私は、並行してそのような何かこれを実装する方法を考えていた:
public setPathMt(Node paramParentNode)
{
this.path = paramParentNode.Path + "." + this.IDNode;
Parallel.Foreach(this.Childs,
(iteratorNode) =>
{
iteratorNode.SetPathMt(this);
}
);
}
をしかし、この場合、私はメソッドの再帰呼び出しを待つ方法を知らないので、私は、正しい方法を知りません、再帰的な方法がいつ終了したのか、私はどのように知っているのですか?それはそれのマルチスレッド再帰的なメソッドを実装するための最良の方法だろう
?
ありがとうございました。
そして、なぜそんなことを並列化するのですか? 2つの文字列をドットで連結すると、連続したバージョンでは時間がかかりませんか? – Evk