【问题标题】:haxelib run can't start new threads?haxelib run 无法启动新线程?
【发布时间】:2018-10-17 17:48:45
【问题描述】:

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

haxelib run haxelib-test

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

没有线程一切正常。

哈希码:

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"
}

【问题讨论】:

    标签: haxe neko haxelib


    【解决方案1】:

    来自您链接的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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-13
      • 2016-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多