[英]Which task scheduler is used by default when starting/running/invoking tasks in .NET?
当我从使用特定调度程序运行的任务启动任务时,使用哪个任务调度程序?
Task.Factory.StartNew(A, CancellationToken.None, TaskCreationOptions.None, new MyTaskScheduler());
// ...
void A()
{
// 1
Parallel.Invoke(sometasks);
// 2
Task.Run(sometask);
// 3
Parallel.For(/*...*/);
// 4
// Any other task execution that isn't specifying a scheduler explicitly
}
所有示例都将由 MyTaskScheduler 安排吗? 我想使用 QueuedTaskScheduler( 来自 ParallelExtensionsExtras )来处理复杂 web api 请求(可能启动任务和/或使用其他 TPL 功能)的优先级和并发限制。
对于大多数TPL方法,经验法则是使用默认任务调度程序,无论哪个任务调度程序与当前线程相关联,除非您另有明确说明。
您会发现大多数方法要么采用具有任务调度程序属性的选项,要么您可以在方法本身中提供一个作为重载
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.