来自here
The .NET Framework provides local task queues for each worker thread in the thread pool.Giving different parts of the application their own work queues helps avoid a central bottleneck ( by not accessing the global queue).
我假设这些队列用于来自工作线程而不是来自常规线程的新任务。
问题:
但是为什么队列(在每个工作线程中)以 LIFO 方式运行本地任务?公平在哪里? 较早排队的任务应该较早运行(先进先出)。
我错过了什么?
最佳答案
刚刚排队的任务可能仍将其工作内存集保留在 CPU 缓存中(例如,快速排序以递归方式将要排序的数组部分排队)。 LIFO 促进缓存重用并降低公平性。但无论如何,TPL 并不能保证公平,而且我发现很少有应用程序需要这样做。
关于.Net 4 Task的调度澄清?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18351891/