2

这里

.NET Framework 为线程池中的每个工作线程提供本地任务队列。为应用程序的不同部分提供自己的工作队列有助于避免中心瓶颈(通过不访问全局队列)。

在此处输入图像描述

我假设这些队列用于来自工作线程而不是来自常规线程的新任务。

问题 :

但是为什么队列(在每个工作线程中)以 LIFO 方式运行本地任务?公平在哪里?更早排队的任务应该更早运行(FIFO)。

我错过了什么?

4

1 回答 1

3

刚刚排队的任务可能会将其工作内存集仍在 CPU 缓存中(例如,快速排序以递归方式将要排序的数组的部分入队)。LIFO 促进缓存重用并降低公平性。但无论如何,TPL 并不能保证公平,而且我看到很少有应用程序需要它。

于 2013-08-21T08:42:49.077 回答