繁体   English   中英

在 .NET 中启动/运行/调用任务时默认使用哪个任务调度程序?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM