下面的代码片段有什么区别?两个都不会使用线程池线程吗?
例如,如果我想为集合中的每个项目调用一个函数,
Parallel.ForEach<Item>(items, item => DoSomething(item));
vs
foreach(var item in items)
{
Task.Factory.StartNew(() => DoSomething(item));
}
Run Code Online (Sandbox Code Playgroud) 观察者以下功能:
public Task RunInOrderAsync<TTaskSeed>(IEnumerable<TTaskSeed> taskSeedGenerator,
CreateTaskDelegate<TTaskSeed> createTask,
OnTaskErrorDelegate<TTaskSeed> onError = null,
OnTaskSuccessDelegate<TTaskSeed> onSuccess = null) where TTaskSeed : class
{
Action<Exception, TTaskSeed> onFailed = (exc, taskSeed) =>
{
if (onError != null)
{
onError(exc, taskSeed);
}
};
Action<Task> onDone = t =>
{
var taskSeed = (TTaskSeed)t.AsyncState;
if (t.Exception != null)
{
onFailed(t.Exception, taskSeed);
}
else if (onSuccess != null)
{
onSuccess(t, taskSeed);
}
};
var enumerator = taskSeedGenerator.GetEnumerator();
Task task = null;
while (enumerator.MoveNext())
{
if (task == null) …
Run Code Online (Sandbox Code Playgroud) 我正在使用Task类来进行多线程计算.
例如:
List<Task> taskList = new List<Task>();
for(int i=0;i<10;i++){
var task = new Task(() => Console.WriteLine("Hello from taskA."));
taskList.Add(task);
task.Start();
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让我们说,最多只能运行3个任务,其余的要等待?
我想知道是否存在可以管理某些"任务"的现有框架.
我知道任务并行,但(如果我错了,请纠正我)我不认为它符合我的需要(主要是因为它适用于完成的任务列表).
我需要的基础是我想给X线程做一些工作.
但是:
你知道什么可以帮助我吗?或者我应该用手管理一切?