自定义任务框架

J4N*_*J4N 0 .net c# multithreading task-parallel-library

我想知道是否存在可以管理某些"任务"的现有框架.

我知道任务并行,但(如果我错了,请纠正我)我不认为它符合我的需要(主要是因为它适用于完成的任务列表).

我需要的基础是我想给X线程做一些工作.

但是:

  • 每个任务都可以生成创建将来要执行的新任务(可以是0任务,就像它可以是100个任务一样)
  • 如果我的任务列表为空,我希望我的非工作线程等待所有线程完成他们的任务,也许我最后一个线程正在运行,这将生成其他3个线程可以处理的50个新任务.

你知道什么可以帮助我吗?或者我应该用手管理一切?

Jus*_*ony 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);
Run Code Online (Sandbox Code Playgroud)

更新:

我也忘记了子任务需要在内部任务上标记,否则外部任务不会等待.这是嵌套任务的MSDN以及如何使用它们.但是,简而言之,当您创建嵌套任务时,您必须将其标记为附加到父任务.

TaskCreationOptions.AttachedToParent
Run Code Online (Sandbox Code Playgroud)