From 20535cb86266d7a4828009f3ddca42e35269b9e2 Mon Sep 17 00:00:00 2001 From: chai Date: Fri, 13 Sep 2019 15:08:43 +0800 Subject: =?UTF-8?q?*=E6=A0=BC=E5=BC=8F=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/libjin-lua/common/l_shared.hpp | 140 ++++++++++++++++++------------------- 1 file changed, 70 insertions(+), 70 deletions(-) (limited to 'src/libjin-lua/common/l_shared.hpp') diff --git a/src/libjin-lua/common/l_shared.hpp b/src/libjin-lua/common/l_shared.hpp index 6a58ab3..11f28b3 100644 --- a/src/libjin-lua/common/l_shared.hpp +++ b/src/libjin-lua/common/l_shared.hpp @@ -9,76 +9,76 @@ namespace JinEngine { - namespace Lua - { - - class LuaObject; - - /// - /// Thread shared object wrapper. - /// - class Shared - { - public: - Shared(Object* obj) - : mCount(0) - , mObject(obj) - { - } - - inline Object* operator->() - { - return static_cast(mObject); - } - - inline Object* getObject() - { - return static_cast(mObject); - } - - template - inline T* getObject() - { - return static_cast(mObject); - } - - private: - friend class LuaObject; - - // Disable copy. - Shared(const Shared& shared); - - /// - /// Shared只能在堆 - /// - ~Shared() - { - delete mObject; - } - - /// - /// 在同一个线程的lua_State中,LuaObject和EngineObject应该是一一对应,由LuaObject(lua runtime)管理引用计数 - /// 和回收。Engine-side引用计数是为了维护不同线程的lua_State共享同一个EngineObject。每次由LuaObject绑定一个 - /// Shared时就增加一个引用计数,理论上在同一个线程中,一个EngineObject只能由一个LuaObject绑定,发生在new - /// instance过程中,那么mCount就表明EngineObject的共享线程数。 - /// - inline void Shared::retain() - { - ++mCount; - } - - inline void Shared::release() - { - if (--mCount <= 0) - delete this; - } - - Object* mObject; - int mCount; - - }; - - } // namespace Lua + namespace Lua + { + + class LuaObject; + + /// + /// Thread shared object wrapper. + /// + class Shared + { + public: + Shared(Object* obj) + : mCount(0) + , mObject(obj) + { + } + + inline Object* operator->() + { + return static_cast(mObject); + } + + inline Object* getObject() + { + return static_cast(mObject); + } + + template + inline T* getObject() + { + return static_cast(mObject); + } + + private: + friend class LuaObject; + + // Disable copy. + Shared(const Shared& shared); + + /// + /// Shared只能在堆 + /// + ~Shared() + { + delete mObject; + } + + /// + /// 在同一个线程的lua_State中,LuaObject和EngineObject应该是一一对应,由LuaObject(lua runtime)管理引用计数 + /// 和回收。Engine-side引用计数是为了维护不同线程的lua_State共享同一个EngineObject。每次由LuaObject绑定一个 + /// Shared时就增加一个引用计数,理论上在同一个线程中,一个EngineObject只能由一个LuaObject绑定,发生在new + /// instance过程中,那么mCount就表明EngineObject的共享线程数。 + /// + inline void Shared::retain() + { + ++mCount; + } + + inline void Shared::release() + { + if (--mCount <= 0) + delete this; + } + + Object* mObject; + int mCount; + + }; + + } // namespace Lua } // namespace JinEngine #endif \ No newline at end of file -- cgit v1.1-26-g67d0