来自here
.NET Framework为每个工作线程提供本地任务队列 在线程池中。给自己的应用程序的不同部分 工作队列有助于避免中心瓶颈(通过不访问全局队列)。
我假设这些队列用于来自工作线程的新任务,而不是来自常规线程。
问题:
但是为什么队列(在每个工作线程中)以LIFO方式运行本地任务?公平在哪里? 之前排队的任务应该提前运行(FIFO)。
我错过了什么?
答案 0 :(得分:3)
刚刚排队的任务可能会将其工作内存集仍保留在CPU缓存中(例如,快速排序会递归排队要排序的数组部分)。 LIFO促进缓存重用并降低公平性。但是TPL并不能保证公平性,而且我看到很少有应用需要它。