История изменений
Исправление byko3y, (текущая версия) :
Там тоже на каждом запросе внешнего мира функция (которая там называется task) останавливается, уходит в обслуживающий код, который затем её перезапускает и на все предыдущие yield возвращает ранее полученные значения
Я в PSO сталкивался с подобной хренью. Отказ, из-за которого программа не может продолжать работать В ТЕКУЩИЙ МОМЕНТ — это вообще типовая история в реальном мире. Даже рантаймы с поддержкой зеленых потоков такого не умеют — только в отдельных СУБД есть поддержка атомарных сложных транзакций.
В остальном отсталая методология программирования говорит, что все операции выполняются мгновенно и всегда успешно, если что-то идет не так — программа/подпрограмма необратимо умирает. Отсюда необходимость в тех же кэшах ФС — они были бы не нужны, если бы программы умели ждать окончания ввода-вывода. К сожалению, во всех популярных ЯП за идемпотентностью приходится следить только руками, хотя бы обращаясь только к идемпотентным функциямм и объектам.
Исходная версия byko3y, :
Там тоже на каждом запросе внешнего мира функция (которая там называется task) останавливается, уходит в обслуживающий код, который затем её перезапускает и на все предыдущие yield возвращает ранее полученные значения
Я в PSO сталкивался с подобной хренью. Отказ, из-за которого программа не может продолжать работать В ТЕКУЩИЙ МОМЕНТ — это вообще типовая история в реальном мире. Даже рантаймы с поддержкой зеленых потоков такого не умеют — только в отдельных СУБД есть поддержка подобных трюков.
В остальном отсталая методология программирования говорит, что все операции выполняются мгновенно и всегда успешно, если что-то идет не так — программа/подпрограмма необратимо умирает. Отсюда необходимость в тех же кэшах ФС — они были бы не нужны, если бы программы умели ждать окончания ввода-вывода. К сожалению, во всех популярных ЯП за идемпотентностью приходится следить только руками, хотя бы обращаясь только к идемпотентным функциямм и объектам.