История изменений
Исправление dissident, (текущая версия) :
теперь вопрос - кто переключает контексты, то есть дает возможность каждой сущности занять процессор и работать.
Шедулер для данного трэда. Т.е. просто цикл:
for each coroutine
do it until yield or dead
go to next coroutine
Либо другой тип шедулера.
Это и будут fiber. А корутины если самостоятельно нужно запускать resume после каждого yield.
Опять же если я правильно понял вот это: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4024.pdf
если шедулер по таймеру - это вытесняющая многозадачность. если переключение по явному(или неявному) вызову yield из самого кода - это кооперативная. как можно неявно вызвать yield?
Не «неявно вызвать yield», а «явно вызвать resume» (см. пример Lua выше) или «неявно вызвать resume» (см пример Unity выше).
Исходная версия dissident, :
теперь вопрос - кто переключает контексты, то есть дает возможность каждой сущности занять процессор и работать.
Шедулер для данного трэда. Т.е. просто цикл:
for each coroutine
do it until done
go to next coroutine
Либо другой тип шедулера.
Это и будут fiber. А корутины если самостоятельно нужно запускать resume после каждого yield.
Опять же если я правильно понял вот это: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4024.pdf
если шедулер по таймеру - это вытесняющая многозадачность. если переключение по явному(или неявному) вызову yield из самого кода - это кооперативная. как можно неявно вызвать yield?
Не «неявно вызвать yield», а «явно вызвать resume» (см. пример Lua выше) или «неявно вызвать resume» (см пример Unity выше).