From 150944ee9e41df2ae5ee25c7845c3f5b2bd74af0 Mon Sep 17 00:00:00 2001 From: chai Date: Fri, 7 Dec 2018 11:22:59 +0800 Subject: =?UTF-8?q?*=E7=A7=81=E6=9C=89=E5=8C=96shared=20object=20template?= =?UTF-8?q?=20retain=E5=92=8Crelease?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lua/common/je_lua_shared.hpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/lua/common') diff --git a/src/lua/common/je_lua_shared.hpp b/src/lua/common/je_lua_shared.hpp index ad65be0..bfe0629 100644 --- a/src/lua/common/je_lua_shared.hpp +++ b/src/lua/common/je_lua_shared.hpp @@ -10,25 +10,31 @@ namespace JinEngine namespace Lua { + class LuaObject; + /// /// Thread safe. /// class SharedBase { public: - void retain(); - - void release(); - bool isType(const char* t); const char* getType(); protected: + friend class LuaObject; + SharedBase(void* obj, const char* t); SharedBase(const SharedBase&); + // 在同一个线程的lua_State中,LuaObject和EngineObject应该是一一对应,由LuaObject(lua runtime)管理 + // 引用计数和回收。Engine-side引用计数是为了维护不同线程的lua_State共享同一个EngineObject。 + void retain(); + + void release(); + virtual ~SharedBase(); void* mObject; -- cgit v1.1-26-g67d0