прекратить изолировать
Когда я хочу завершить изоляцию, запущенную на сервере, созданном с использованием Isolate.spawn()
или Isolate.spawnUri()
, как я могу завершить изоляцию.
throw x
внутри изолята завершает изоляцию, когда исключение не перехвачено.
Но я надеюсь, что есть более элегантное решение.
isolate.kill()
бросает Uncaught Error: Unsupported operation: kill
получить уведомление
Я предполагаю, что когда асинхронные операции больше не активны, изоляция заканчивается (аналогично main
), но как я могу узнать, действительно ли изоляция завершена?
Есть ли способ для родительского изолята получать уведомления о прекращении действия дочернего изолята? isolate.addOnExitListener(_sendPort);
бросает Uncaught Error: Unsupported operation: addOnExitListener
?
Есть ли альтернативные способы или мне нужно подождать, пока эти методы не будут поддерживаться?
Future<ExitCode> Isolate.terminate()
? Я думаю, что если isolate не находится в неотвечающем состоянии, его не следует прерывать извне. В противном случае инкапсуляция нарушается, потому что ваш код работает исходя из предположения, что изолят B не имеет выделенных ресурсов (таких как соединения с БД, сокеты и т. д.), которые должны быть должным образом освобождены. - person JAre   schedule 28.08.2014Future isolate.killYourself()
, которые будут выполнять предопределенный обратный вызов завершения внутри изолята B и возвращать Future в изоляте A. Если изолят B не имеет обратного вызова завершения, то Future должен содержать ошибку. Таким образом, пользователь сможет убить изолят, только если у него есть правильная механика. - person JAre   schedule 28.08.2014ReceivePort.close()
прекратит изоляцию. stackoverflow.com/questions/ 24470247/ - person JAre   schedule 28.08.2014