0

いくつかの「タスク」を管理できる既存のフレームワークがあるかどうかを知りたいです。

私はTask Parallelismを認識していますが、(間違っている場合は修正してください) 私のニーズに合っているとは思いません (ほとんどの場合、完成したタスクのリストで機能するためです)。

私のニーズの基本は、X スレッドに何らかの作業をさせたいということです。

しかし

  • すべてのタスクは、将来実行される新しいタスクの作成を生成できます (100 タスクのように 0 タスクの場合もあります)
  • タスクリストが空の場合、すべてのスレッドがタスクを終了するまで非稼働スレッドが待機するようにします。最後のスレッドが 1 つ実行されている可能性があります。これにより、他の 3 つのスレッドが処理できる 50 個の新しいタスクが生成されます。

私を助けることができる何かを知っていますか?それとも、すべてを手作業で管理する必要がありますか?

4

2 に答える 2

6

TPLはその音で機能します。サブタスクを作成したり、WaitAllを使用してすべてのタスクが完了したことを確認したりできます。

これにより、スレッド管理についても心配する必要がなくなります。

コードについて詳しく知らなくても、次の疑似コードのように思われます。

//for loop to create tasks
var task = new Task(()=>Task.Factory.StartNew(()=>dostuff));
taskList.Add(task)
//end for loop

Task.WaitAll(taskList);

更新

また、サブタスクを内部タスクでマークする必要があることも忘れていました。そうしないと、外部タスクが待機しません。ネストされたタスクとその操作方法に関する MSDN を次に示します。ただし、簡単に言えば、ネストされたタスクを作成するときは、親タスクに関連付けられていることを示す必要があります。

TaskCreationOptions.AttachedToParent
于 2012-07-02T13:21:46.227 に答える
1

分散並列タスク処理に適した Actor Framework を見てください。それらのリストがあり、ここに .NETのそれらの 1 つがあります。

于 2012-09-07T13:31:15.393 に答える