Jruby线程上下文实例关联

高拉夫·沙(Gaurav Shah)

我正在尝试在ruby中评估javascript。

config/initializer/initializer_context.rb
  js_str = 
  EXEC_PP_CONTEXT = ExecJS.compile("function test_add(param) { return param.a+ param.b;}")

然后在我的控制器中,我正在使用:

data_hash = {:a=>4,:b=>5}
EXEC_PP_CONTEXT.exec("return test_add(#{data_hash.to_json})")

但我偶尔会收到此错误(每100个请求中有1个)

can not use Context instance already associated with some thread

堆:

  • 红宝石1.9模式下的jruby-1.7.3
  • 特立尼达服务器,jruby_min_runtimes和jruby_min_runtimes为1
  • 导轨3.2.13
  • Therubyrhino 2.0.2

如果我已经将最大运行时间和最小运行时间设置为1,那么它是否应该首先避免此问题?

高拉夫·沙(Gaurav Shah)

最终通过阅读Mozilla Rhino的代码找到了答案:https : //github.com/matthieu/rhymeno/blob/master/src/org/mozilla/javascript/Context.java#LC416

static final Context enter(Context cx, ContextFactory factory) 基本上,该方法计算上下文(使用它/执行它)内部的线程数,如果另一个线程尝试输入它,则抛出错误。

为了避免该问题并实现并发性,我们使用ruby的方法为每个线程懒惰地创建了一个上下文。 Thread[:current][:some_js_context] = blah_

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

什么是线程上下文?

来自分类Dev

GAE:如何在线程和/或实例之间共享上下文

来自分类Dev

Android上下文线程检查

来自分类Dev

线程上下文中的模板方法

来自分类Dev

线程上下文中的模板方法

来自分类Dev

(上下文,令牌)实例化MediaController

来自分类Dev

MVC EF上下文实例

来自分类Dev

Haskell实例多个上下文

来自分类Dev

无法将程序与上下文菜单操作关联

来自分类Dev

将验证上下文传递给关联模型

来自分类Dev

isGooglePlayServicesAvailable的上下文(上下文上下文)

来自分类Dev

将上下文注入这样的eventlet线程是否安全?

来自分类Dev

实体框架具有多个线程的单个上下文

来自分类Dev

跨线程跟踪特定于上下文的数据

来自分类Dev

在UI线程上下文中执行代码的正确方法?

来自分类Dev

OpenGL多线程/共享上下文和glGenBuffers

来自分类Dev

上下文在睡眠/等待线程上切换

来自分类Dev

我可以回到线程执行上下文吗?

来自分类Dev

异步WCF REST服务中跨线程的上下文

来自分类Dev

将ZMQ上下文传递给线程

来自分类Dev

在多个线程中使用相同的OpenGL上下文

来自分类Dev

防止线程被垃圾回收,并防止上下文泄漏

来自分类Dev

模拟多线程上下文以在Python中进行测试

来自分类Dev

多线程上下文中的assert()安全

来自分类Dev

测量线程的上下文切换时间

来自分类Dev

从类传递上下文扩展线程

来自分类Dev

的Java / Spring MVC的:提供请求上下文子线程

来自分类Dev

超线程数据缓存上下文别名

来自分类Dev

每个线程一个“ Java上下文”?