Подтвердить что ты не робот

В чем же разница между v8:: Isolate и v8:: Context?

В чем разница/связь между этими объектами в V8? Подходит ли контекст к Изоляту или наоборот?

Я знаю, что к одному изоляту может быть доступ только один поток за раз (и что для v8:: Locker я предполагаю?).

Я просмотрел документы, но я не могу понять, как это понимать - любая помощь приветствуется!

4b9b3361

Ответ 1

Я уверен, что следующее упрощение, но оно работает для меня.

Изоляция является независимой копией среды выполнения V8, включая диспетчер кучи, сборщик мусора и т.д. Только один поток может одновременно получить доступ к данному изоляту, но разные потоки могут одновременно обращаться к различным изолятам.

Изолировать недостаточно для запуска скриптов. Вам также нужен глобальный (корневой) объект. Контекст определяет полную среду исполнения script, назначая объект в кучу изоляции как глобальный объект.

Следовательно, не только много контекстов "существуют" в данном изоляте, но также могут легко и безопасно делиться любыми или всеми их объектами. Это потому, что их объекты фактически принадлежат изоляту и защищены исключительной блокировкой изоляции.

Ответ 2

Isolates, как следует из названия, полностью закрыты для внешнего мира, поэтому Isolates может работать параллельно, поскольку они являются разными экземплярами V8 целиком. Подумайте о Isolate как песочнице - среде выполнения V8.

Теперь в Isolate вы, вероятно, будете иметь множество несвязанных приложений JavaScript, работающих одновременно. JavaScript предоставляет множество языковых средств на глобальном уровне, а использование нескольких несвязанных приложений с этими "синглонами" - не очень хорошая идея. Таким образом, в экземпляре V8, называемом Isolate, вы можете определить несколько Contexts, чтобы несвязанные приложения могли делать то, что им нужно, не мешая друг другу.

Это не идеальная аналогия, но если вы знаете веб-материал Java, представьте несколько экземпляров Tomcat, развернутых на одном компьютере, а затем каждый экземпляр Tomcat запускает отдельные приложения со своими веб-контекстами и web.xml. Это вроде как.

Надеюсь, что это поможет.