Graal Javascript - 线程安全
Graal Javascript - thread safety
在多线程应用程序(例如每个 servlet 请求)中使用 Graal.js 的推荐方法是什么?我们这样使用 Graal.js
jsContext = Context.newBuilder("js").allowAllAccess(true).build();
bindings = jsContext.getBindings("js");
jsContext.eval("js", jsCodeString);
我们是否应该为每个正在执行的线程设置一个唯一的 Context/binding。这可以通过 Context/Binding 对池或使用 threadlocal 来完成。这是执行此操作的正确方法吗?
您不应同时从多个线程访问一个 Context
。因此,您提出的解决方案(Context
s 池或本地线程 Context
s)是有效的方法。
graalvm/graaljs
存储库 contains some threading-related examples. You can see the usage of a thread-local Context
there (in ExecutorsTest).
仅供参考:blog-post 关于使用 Graal JavaScript 的多线程可能会澄清您可能有的进一步问题。
在多线程应用程序(例如每个 servlet 请求)中使用 Graal.js 的推荐方法是什么?我们这样使用 Graal.js
jsContext = Context.newBuilder("js").allowAllAccess(true).build();
bindings = jsContext.getBindings("js");
jsContext.eval("js", jsCodeString);
我们是否应该为每个正在执行的线程设置一个唯一的 Context/binding。这可以通过 Context/Binding 对池或使用 threadlocal 来完成。这是执行此操作的正确方法吗?
您不应同时从多个线程访问一个 Context
。因此,您提出的解决方案(Context
s 池或本地线程 Context
s)是有效的方法。
graalvm/graaljs
存储库 contains some threading-related examples. You can see the usage of a thread-local Context
there (in ExecutorsTest).
仅供参考:blog-post 关于使用 Graal JavaScript 的多线程可能会澄清您可能有的进一步问题。