在多线程环境中执行Lua函数时出现异常

时间:2014-10-14 13:41:16

标签: lua

我们在应用程序中使用Lua,并在多线程环境中执行时遇到问题。 以下是用于应用程序的步骤和示例代码。 1)我们在Lua中创建函数,编译它并存储编译的字节代码。 公共课

 ScripletSerialization {
String script = "poc/lua/hello.lua";
                                InputStream inStream = Thread.currentThread().getContextClassLoader()
                .getResourceAsStream(script);
        Prototype chunk = LuaC.instance.compile(inStream, "Hello");
        ByteArrayOutputStream oStream = new ByteArrayOutputStream();
        DumpState.dump(chunk, oStream, Boolean.TRUE, 1, Boolean.TRUE);
        byte[] luaByteArray = oStream.toByteArray();

    // using ByteArray

2)我们正在调用以下的编译函数。

Globals globals = null;
        globals = JsePlatform.standardGlobals();
        Prototype chunk1 = globals.undumper.undump(new ByteArrayInputStream(
                luaByteArray), "Hello");
        LuaClosure f = new LuaClosure(chunk1, globals);
        f.call();
                     LuaValue lvalue= globals.get("Hello”);
                     LuaValue output= lvalue.call(luaTableInput);

代码在单线程env中工作正常,但是如果我们在多线程env中运行代码,它会给出lua异常,如下所示。         Attemt连接nil和string。

0 个答案:

没有答案