svSocket evalServer пропустить процесс ожидания

Проблема версии 1. Можем ли мы заставить pr_fun обработать его заново, не дожидаясь завершения ch_fun()

ch_fun <- function() {Sys.sleep(10)}
pr_fun <- function() {ch_fun(); return("Done")}
pr_fun()

Проблема Актуальная версия

R сессия 1 как svSocket Server

library(svSocket)
startSocketServer(port = 9875,local=FALSE)

R сессия 2 как клиент svSocket

con <- socketConnection(port = 9875,host="127.0.0.1")
evalServer(con,"Sys.sleep(20)")

R сессия 3 в качестве клиента svSocket

con <- socketConnection(port = 9875,host="127.0.0.1")
evalServer(con,"a=10")

Если мы запустим строки кода для сеанса 2 и пока сервер обрабатывает вызов Sys.sleep, мы быстро поместим строки кода для сеанса 3 в сеанс 3 и прервем вызов, который все еще обрабатывается. Мы можем проверить это на стороне сервера, проверив, был ли создан объект "а".

Моя точка зрения заключается в том, что нам не нужно было ждать, пока работа завершится в третьем сеансе, но все же она была обработана, так что каким-то образом задания накапливались на стороне сеанса, и нам не нужно ждать окончания работ, просто отправив их на сервер и отмени процесс ожидания и двигаться вперед. Мы можем вручную прервать использование Ctrl+C или Esc, но как я могу сделать это в функции. Я хочу, чтобы pr_fun вызывал ch_fun в сеансе сервера и немедленно приступил к его возврату.

0 ответов

Другие вопросы по тегам