创建另一个任务
本文关键字:任务 另一个 创建 | 更新日期: 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