haxelib run无法启动新线程?

时间:2018-05-07 21:01:55

标签: haxe neko haxelib

尝试在我的测试Haxelib上使用haxelib run command时出现异常:

haxelib run haxelib-test
  

D:\ HaxeToolkit \ haxe \ std / neko / vm / Thread.hx:54:字符20-71:无法在宏内创建线程

没有线程,一切正常。

Haxe代码:

import neko.vm.Thread;

class Main {
    static function main() {
        trace("starting");
        var commandsThread = Thread.create(read);
        trace("ending");
    }

    static function read() {
        trace("new thread");
    }
}

我的haxelib.json看起来像这样:

{
    "name": "haxelib-test",
    "license": "MIT",
    "tags": [],
    "description": "",
    "version": "0.0.1",
    "classPath": "src/",
    "main": "Main"
}

1 个答案:

答案 0 :(得分:5)

来自你链接的Haxelib docs

  

可以使用run.n执行haxelib.json帮助程序或haxelib run中定义的主要类的库。

由于您提供的是main类,Haxelib正在尝试使用--interp参数在Haxe的内置宏解释器中运行您的代码。

Haxe 3的宏解释器不支持线程,因此错误。您可以通过编译run.n文件并将其打包到库中来解决此问题,因此脚本在Neko VM中执行:

haxe -main Main -neko run.n

Haxe 4 introduced线程支持preview.5版本中名为"Eval"的新宏解释器。从该版本开始,您可以使用eval.vm.Thread。但请注意,这会使Haxelib的run命令对运行较旧的Haxe版本的人不起作用。因此,如果你想获得最大的兼容性,那么现在就坚持使用Neko。