簡體   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