Graal Javascript - безопасность потоков - PullRequest
1 голос
/ 13 апреля 2019

Каков рекомендуемый способ использования Graal.js в многопоточном приложении (например, по запросу сервлета)? Мы используем Graal.js вот так

jsContext = Context.newBuilder("js").allowAllAccess(true).build();
bindings = jsContext.getBindings("js");
jsContext.eval("js", jsCodeString);

Должен ли у нас быть уникальный контекст / привязка для каждого выполняющегося потока. Это может быть выполнено с помощью пула пар Context / Binding или с помощью threadlocal. Это правильный способ сделать это?

1 Ответ

1 голос
/ 13 апреля 2019

Вы не должны обращаться к одному Context из нескольких потоков одновременно.Таким образом, предлагаемые вами решения (пул Context s или локальный поток Context s) являются допустимыми способами сделать это.

graalvm/graaljs хранилище содержит некоторую многопоточностьсвязанные примеры.Вы можете увидеть использование локального потока Context там (в ExecutorsTest ).

К вашему сведению: сообщение в блоге о многопоточности сGraal JavaScript, который может прояснить дополнительные вопросы, которые могут у вас возникнуть.

...