创建另一个任务

本文关键字:任务 另一个 创建 | 更新日期: 2023-09-27 18:01:39

for (int i = 0; i < someNumber; i++)
{
    Task<myObject>.Run(() => 
    {
       // some work
       // ...
       Task<myObjectNew>.Run(() => { // other work });
    });
}

我有一个循环,它创建了许多初始任务(比如多达100个)。然后这些任务中的每一个都做一些小的工作单元,然后自己创建另一个任务。我注意到的是,在所有任务都设置好之前,最初的100个任务中没有一个启动。

如果初始任务创建了一个线程,而不是另一个任务,那么事情似乎很好,一旦第一个外部任务被创建,它就开始执行(并产生一个新的线程等)。

我没有看到像以前一样的行为,但我也没有让一个任务创建另一个任务。

任何想法?

创建另一个任务

Task<T>对象通过线程池进行管理,并且在启动速度方面受到限制。我想不起当前的默认值,但基本的想法是,一旦线程池耗尽线程,新线程的创建速度仅为每秒一个(左右)。

显式创建Thread对象时,不需要等待。它们被立即创建并开始。在线程真正开始执行之前,可能会有轻微的延迟,大约几十毫秒,但除此之外,它实际上是即时的。

使用线程池工作线程调度任务。如果你想绕过线程池,你可以声明你的任务为LongRunning,它将立即启动一个新线程。

如果你需要更多的信息:https://msdn.microsoft.com/en-us/library/ff963549.aspx