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调用方法时可能会发生额外的计算(和突变).由于可见性问题,这些方法在与创建它们相同的线程上被调用很重要. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |