Это должно работать прекрасно, если вы
#' @filter cors
cors <- function(req, res) {
res$setHeader("Access-Control-Allow-Origin", "*")
plumber::forward()
}
отвечает за производственную среду, но хорошо работает только для демонстрации / тестирования.
Забавно, что вы спросите об этом сегодня, а потом я прочитал о продолжениях в моно . Похоже, что вы ищете. В частности, есть ссылка на Microthreading в Second Life , включая это описание:
SecondLife требовал, чтобы код был приостановлено в любой момент времени и чтобы все его состояние было сериализуемым в формат, подходящий для хранения в базу данных. Сериализованное состояние может быть восстановлен в другом момент времени или другой компьютер (например, во время движения от узла к узлу).
Если я вас неправильно понял, это может быть хорошим способом изучения.
You might want to take a look at Windows Workflow:
http://msdn.microsoft.com/en-us/netframework/aa663328.aspx
It is meant to be used in a manner like this, with the ability to persist a workflow if there is inactivity on it, as well as the ability to restart it.
While technically it isn't language support, it should get the job done.
Вы ищете продолжения ?
На любом языке, поддерживающем замыкания, можно писать программы в стиле передачи продолжения и вручную реализовывать call / cc.
call / cc
является call-with-current-continue
.
Я обнаружил, что лучшая поддержка для сериализации сопрограмм оказывается в Lua через библиотеку Pluto .
Я использую Mono 2.6 , но не могу заставить работать сопрограммы. Затем я некоторое время экспериментировал с Python / IronPython, но поддержки сериализации не хватало.
Теперь с Lua мне придется взаимодействовать через P / Invoke из .NET в Lua , что оказывается сложной задачей для работы как с Linux, так и с Windows, но в конечном итоге, если я ищу язык сценариев для поддержки игры, вероятно, лучше всего использовать то, что уже широко используется.
Обновление
В итоге я на время отказался от Lua. Я слишком увяз в вопросах интеграции. Я вернулся к Python.Я использую выражения вывода Python для своих сопрограмм и работаю над проблемой, что pickle не поддерживает генераторы .
В моем случае в состоянии программы не всегда есть активные сопрограммы, что означает, что иногда я могу выбрать состояние. В противном случае я сохраняю последнее состояние рассола и «историю воспроизведения» действий с тех пор. Тогда восстановление состояния - это просто распаковка последнего состояния и повторное воспроизведение любых действий.