haxelib run не может начать новые темы?
Получение исключения при попытке использования haxelib run
команда
Main.hx:5: starting
D:\HaxeToolkit\haxe\std/neko/vm/Thread.hx:54: characters 20-71 : Can't create thread from within a macro
D:\HaxeToolkit\haxe\lib\haxelib-test/0,0,1/src/Main.hx:6: characters 29-48 : Called from
?:1: characters 1048575-8796094070782 : Called from
Aborted
Завернутый хак-код:
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: https://lib.haxe.org/documentation/using-haxelib/
haxelib install haxelib-test.zip
haxelib run haxelib-test
Перед этим нужно создать haxelib.json
и папка почтового индекса https://lib.haxe.org/documentation/creating-a-haxelib-package/ Mine haxelib.json
{
"name": "haxelib-test",
"license": "MIT",
"tags": [],
"description": "",
"version": "0.0.1",
"classPath": "src/",
"main": "Main"
}
(Следите за свойствами classPath, мой основной класс /src/Main.hx
)
1 ответ
Из документов Haxelib вы связали:
Библиотеки с любым
run.n
помощник или основной класс, определенный вhaxelib.json
, может быть выполнен с использованиемhaxelib run
Так как вы предоставляете main
класс, Haxelib пытается запустить ваш код во встроенном интерпретаторе Haxe (с --interp
аргумент командной строки). К сожалению, интерпретатор не поддерживает потоки. Он в основном используется для макросов, поэтому сообщение об ошибке может быть немного запутанным.
Вы можете просто обойти это, составив run.n
файл и упаковка, которые вместе с вашей библиотекой, поэтому сценарий выполняется в Neko VM (которая входит в комплект Haxe):
haxe -main Main -neko run.n
Примечание: для разработки и тестирования может быть удобнее создать каталог разработки с haxelib dev
, так что вам не нужно перепаковывать и устанавливать .zip
каждый раз, когда вы что-то меняете.
В этом выпуске обсуждается поддержка потоков для нового макро-интерпретатора Haxe 4 под названием "eval".