加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala编译器是否可重入?

发布时间:2020-12-16 09:21:19 所属栏目:安全 来源:网络整理
导读:对于多玩家编程游戏,我正在为Scala工作,支持编译由玩家提交的多个独立源树.我通过实例化全局编译器对象,成功地运行快速,顺序的编译,而无需重新加载编译器 val compilerGlobal = new Global(settings,reporter) 然后通过单独的编译作业运行 val run = new com
对于多玩家编程游戏,我正在为Scala工作,支持编译由玩家提交的多个独立源树.我通过实例化全局编译器对象,成功地运行快速,顺序的编译,而无需重新加载编译器

val compilerGlobal = new Global(settings,reporter)

然后通过单独的编译作业运行

val run = new compilerGlobal.Run
run.compile(sourceFilePathList)

我现在理想地要并行化服务器(即同时进行多个编译),但是每次都无需重新加载编译器(主要是为了避免重新解析lib).这是否可能,即上面显示的第二部分(安全地:-)进入,还是保持全球状态?如果没有,还有什么我可以试试吗?我目前专注于支持Scala 2.9.1.

解决方法

是的,编译器运行共享状态,所以你不应该在线程之间共享它们.这是Eclipse插件中出现的问题之一.正如@EJP所说,符号表是共享的.

这在您的情况下并不重要,但在IDE中出现:编译器在类型中使用懒惰,这意味着在对Symbol调用方法时可能会发生额外的计算(和突变).由于可见性问题,这些方法在与创建它们相同的线程上被调用很重要.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读