.NET4任务';什么是计划澄清?

.NET4任务';什么是计划澄清?,.net,.net-4.0,task-parallel-library,threadpool,.net,.net 4.0,Task Parallel Library,Threadpool,从 NET Framework为每个工作线程提供本地任务队列 在线程池中。为应用程序的不同部分提供自己的 工作队列有助于避免中心瓶颈(通过不访问全局队列) 我假设这些队列用于新任务,这些任务来自工作线程,而不是常规线程 问题: 但为什么队列(在每个工作线程中)以后进先出的方式运行本地任务?公平在哪里? 较早排队的任务应较早运行(FIFO) 我错过了什么 刚刚排队的任务很可能其工作内存集仍在CPU缓存中(例如,快速排序递归地将要排序的数组部分排队)。后进先出促进缓存重用并降低公平性。但是TPL并

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

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

问题:

但为什么队列(在每个工作线程中)以后进先出的方式运行本地任务?公平在哪里? 较早排队的任务应较早运行(FIFO)


我错过了什么

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

任务类确实因为被宇航员架构师控制而受到影响。这里没有什么特别的事情,您用ContinueWith()添加的子任务按顺序运行。如果您确实想要公平性,还有(将
任务
放入全局FIFO队列)。@svick您是说如果我打开子任务(从工作线程)并设置
首选公平性
,它将进入全局队列?(我想它应该进入本地队列)@RoyiNamir是的,这正是这个选项的目的(阅读我链接的文章)。