.net (How)TPL是否使用(CLR)线程池?

hgc7kmma  于 2023-02-14  发布在  .NET
关注(0)|答案(1)|浏览(106)

我目前正在研究任务并行库,我在哪里读到TPL实际上从CLR级开始使用线程池机制。我找不到任何文章证实这一信息。我知道,TPL为每个线程都有任务队列,并使用一些特殊的工作窃取算法来平衡。据我所知,它为每个处理器创建一个线程。线程池从.NET 4开始使用TPL的任务对象。
我不明白TPL是如何使用线程池的。线程池模式的状态是,工作项被排队,线程池中的空闲线程从这个队列中取出一个。然而,TPL将项目(任务)存储到线程队列中,如果需要的话,窃取工作...因此,完全不同。我的错误在哪里?
附加问题:由于这是我的第一个堆栈溢出问题,我不确定它是否合适。是吗?

qeeaahzv

qeeaahzv1#

在TPL中,TaskScheduler负责将任务排队等待执行,Default调度器将使用线程池--但我相信实际上是新的线程池实现在窃取工作。
丹尼尔Moth有一个blog post,其中包含了一些详细信息,您可能会发现这些信息很有用。

相关问题