Система задач (job system)
Планировщик движка, который разбивает кадр на мелкие задачи и гоняет их по пулу потоков с учётом зависимостей, так что все ядра заняты без ручной возни с потоками.
Вместо одного потока на каждую подсистему он раскладывает короткие задачи — «обнови эти 500 частиц», «отсеки этот узел» — по пулу, где на каждое ядро приходится по рабочему потоку. Задача может объявить зависимость от другой, поэтому планировщик строит граф зависимостей и выполняет всё независимое параллельно. Простаивающие воркеры воруют задачи из очередей занятых (work stealing).
Система Naughty Dog на файберах (GDC 2015) позволяла дёшево приостанавливать и возобновлять задачи; C# Job System в Unity донесла этот подход до широкой аудитории. Выигрыш предполагает, что данные лежат массивами и устроены по data-oriented-принципам, иначе задачи будут драться за одни и те же кэш-линии.