From f4c338c63f3456a8eccd56c35e233843687d55be Mon Sep 17 00:00:00 2001 From: chai Date: Fri, 29 Mar 2019 00:43:25 +0800 Subject: *thread --- source/libs/asura-lib-utils/scripting/lua_env.h | 28 +++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) (limited to 'source/libs/asura-lib-utils/scripting') diff --git a/source/libs/asura-lib-utils/scripting/lua_env.h b/source/libs/asura-lib-utils/scripting/lua_env.h index a467479..3bef3df 100644 --- a/source/libs/asura-lib-utils/scripting/lua_env.h +++ b/source/libs/asura-lib-utils/scripting/lua_env.h @@ -16,21 +16,41 @@ namespace AsuraEngine { /// - /// 程序通过这个接口访问主lua state。 + /// 程序通过这个接口访问主lua state。Asura程序的思想是,进程主线程维护一个lua虚拟机,应用的主要逻辑跑在此虚拟机的主lua + /// 线程里(或者叫主栈里)。 /// class LuaEnv ASURA_FINAL : public Singleton { public: - LuaEnv() : mMainState(0){}; + LuaEnv() : mMainState(0) {}; ~LuaEnv() {}; /// /// 设置主虚拟机的主执行栈。 /// - inline void Init(lua_State* L) { ASSERT(!mMainState); mMainState = L; }; + inline void Init() + { + ASSERT(!mMainState); + // 创建主线程 + mMainState = Luax::LuaxRuntime::Get().Open(); + ASSERT(mMainState); + }; - inline lua_State* GetMainState() { return mMainState; }; + inline lua_State* GetMainState() + { + return mMainState; + }; + + inline Luax::LuaxState& GetMainLuaxState() + { + return Luax::LuaxRuntime::Get()[mMainState].state; + }; + + inline void Exit() + { + Luax::LuaxRuntime::Get().Close(mMainState); + } private: -- cgit v1.1-26-g67d0