История изменений
Исправление q0tw4, (текущая версия) :
в рантайме строить дерево зависимостей и пытается дёргать poll минимально
Я видел как устроена дергалка фьюч. Там linked list и разделено на 2 категории активные и спящие. Пока все спят дергалка спит. Как только реактор разбудил кого-то, дергалка просыпается и дергает всех неспящих по порядку. Если фьюча выполнилась, она может еще кого-то разбудить и кинуть в конец списка неспящих и тот тоже дернется. Как кончился список бодрствующих дергалка уходит опять спать. Ну или то же самое, только есть несколько дергалок впаралель и если у одной из них кончились фьючи, она топает к загруженным соседям и тырит фьючи у них. Никаких деревьев в помине нет. С зависимостями есть другая штука, называется ECS. Там ты декларируешь с какими данными работают системы и планировщик раскидывает их в потоки так, чтоб не нарушался порядок доступа к данным. Но там вся соль в том, что система долго считает, а у фьюч соль в том, что считать там особо нечего, надо только ждать IO
Исходная версия q0tw4, :
в рантайме строить дерево зависимостей и пытается дёргать poll минимально
Я видел как устроена дергалка фьюч. Там linked list и разделено на 2 категории активные и спящие. Пока все спят дергалка спит. Как только реактор разбудил кого-то, дергалка просыпается и дергает. Если фьюча выполнилась, она может еще кого-то разбудить и тот тоже дернется. Как кончился список бодрствующих дергалка уходит опять спать. Ну или то же самое, только есть несколько дергалок впаралель и если у одной из них кончились фьючи, она топает к загруженным соседям и тырит фьючи у них. Никаких деревьев в помине нет. С зависимостями есть другая штука, называется ECS. Там ты декларируешь с какими данными работают системы и планировщик раскидывает их в потоки так, чтоб не нарушался порядок доступа к данным. Но там вся соль в том, что система долго считает, а у фьюч соль в том, что считать там особо нечего, надо только ждать IO