我目前正在研究任务并行库(Task Parallel Library),看到有人说TPL实际上是使用了CLR级别的线程池机制。但我找不到任何文章证实这一信息。我知道,TPL为每个线程都设置了一个任务队列,并使用某种特殊的工作窃取算法来平衡负载。据我所知,它会为每个处理器创建一个线程。自.NET 4以来,线程池开始使用TPL的任务对象。
我无法理解TPL如何使用线程池。线程池模式说明,工作项被排队,线程池中的可用线程从此队列中获取其中一个。而TPL则将任务存储到各个线程的队列中,如有需要,则使用工作窃取......因此,这两者存在相当大的不同。我的错误在哪里?
额外问题:这是我的第一个Stack Overflow问题,我不确定它是否合适。这样可以吗?