haxelib 运行 无法启动新线程?
haxelib run can't start new threads?
在我的测试 Haxelib 中尝试使用 haxelib run
command 时出现异常:
haxelib run haxelib-test
D:\HaxeToolkit\haxe\std/neko/vm/Thread.hx:54: characters 20-71 : Can't create thread from within a macro
没有线程一切正常。
哈希代码:
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"
}
来自您链接的Haxelib docs:
Libraries with either a run.n
helper or a main class defined in haxelib.json
, can be executed using haxelib run
.
由于您提供了 main
class,Haxelib 正在尝试 运行 使用 --interp
参数在 Haxe 的内置宏解释器中执行您的代码。
Haxe 3 的宏解释器不支持线程,因此出现错误。您可以通过编译一个 run.n
文件并将其与您的库一起打包来解决这个问题,因此该脚本在 Neko VM 中执行:
haxe -main Main -neko run.n
Haxe 4 introduced threading support for its new macro interpreter called "Eval" in the preview.5
release. Starting with that version, you can use eval.vm.Thread
。但是,请注意,这会使您的 Haxelib 的 run
命令不适用于 运行 较旧的 Haxe 版本的人。因此,如果您要获得最大的兼容性,请暂时坚持使用 Neko。
在我的测试 Haxelib 中尝试使用 haxelib run
command 时出现异常:
haxelib run haxelib-test
D:\HaxeToolkit\haxe\std/neko/vm/Thread.hx:54: characters 20-71 : Can't create thread from within a macro
没有线程一切正常。
哈希代码:
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"
}
来自您链接的Haxelib docs:
Libraries with either a
run.n
helper or a main class defined inhaxelib.json
, can be executed usinghaxelib run
.
由于您提供了 main
class,Haxelib 正在尝试 运行 使用 --interp
参数在 Haxe 的内置宏解释器中执行您的代码。
Haxe 3 的宏解释器不支持线程,因此出现错误。您可以通过编译一个 run.n
文件并将其与您的库一起打包来解决这个问题,因此该脚本在 Neko VM 中执行:
haxe -main Main -neko run.n
Haxe 4 introduced threading support for its new macro interpreter called "Eval" in the preview.5
release. Starting with that version, you can use eval.vm.Thread
。但是,请注意,这会使您的 Haxelib 的 run
命令不适用于 运行 较旧的 Haxe 版本的人。因此,如果您要获得最大的兼容性,请暂时坚持使用 Neko。