.Net 4任务的日程安排澄清?

时间:2013-08-21 07:58:27

标签: .net .net-4.0 task-parallel-library threadpool

来自here

  

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

enter image description here

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

问题:

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

我错过了什么?

1 个答案:

答案 0 :(得分:3)

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