Фон:
Когда задачи планируются неработающим потоком для обработки рабочими потоками в пуле потоков, они попадают в глобальную очередь.Рабочие потоки используют эту глобальную очередь для извлечения задач для обработки в порядке FIFO («первым пришел - первым вышел»).Это имеет смысл, поскольку задача, которая была запланирована первой, должна завершиться первой.
Теперь, если рабочий процесс обрабатывает задачу и порождает новые подзадачи, они сохраняются в локальной очереди процесса.Когда рабочий процесс завершает свою текущую задачу, он проверяет локальную очередь и извлекает задачу из очереди в порядке LIFO (последний пришел первым - вышел).
[Редактировать] Источники:
- CLR через C #, 4-е издание Джеффри Рихтера (стр. 725)
- Задача MicrosoftДокументация планировщика
Вопрос:
Каково обоснование использования заказа LIFO с локальной очередью?