From c270d033fa04873ee7a8925dbb00cae5edc4555c Mon Sep 17 00:00:00 2001 From: chai Date: Sat, 30 Mar 2019 11:59:35 +0800 Subject: *misc --- source/modules/asura-core/application.h | 4 +- source/modules/asura-core/core_module.cpp | 19 ++++++++ source/modules/asura-core/core_module.h | 14 +++++- source/modules/asura-core/threading/channel.cpp | 0 source/modules/asura-core/threading/channel.h | 19 ++++++++ source/modules/asura-core/threading/coroutine.cpp | 0 source/modules/asura-core/threading/coroutine.h | 31 ------------- source/modules/asura-core/threading/thread.cpp | 0 source/modules/asura-core/threading/thread.h | 53 --------------------- source/modules/asura-core/threading/thread_ex.cpp | 19 ++++++++ source/modules/asura-core/threading/thread_ex.h | 54 ++++++++++++++++++++++ .../asura-core/threading/thread_impl_posix.cpp | 0 .../asura-core/threading/thread_impl_posix.h | 0 .../asura-core/threading/thread_impl_sdl.cpp | 0 .../modules/asura-core/threading/thread_impl_sdl.h | 0 .../asura-core/threading/thread_impl_std.cpp | 0 .../modules/asura-core/threading/thread_impl_std.h | 0 .../asura-core/threading/thread_impl_win32.cpp | 0 .../asura-core/threading/thread_impl_win32.h | 25 ---------- .../modules/asura-core/threading/thread_task.cpp | 0 source/modules/asura-core/threading/thread_task.h | 25 ---------- 21 files changed, 126 insertions(+), 137 deletions(-) create mode 100644 source/modules/asura-core/threading/channel.cpp create mode 100644 source/modules/asura-core/threading/channel.h delete mode 100644 source/modules/asura-core/threading/coroutine.cpp delete mode 100644 source/modules/asura-core/threading/coroutine.h delete mode 100644 source/modules/asura-core/threading/thread.cpp delete mode 100644 source/modules/asura-core/threading/thread.h create mode 100644 source/modules/asura-core/threading/thread_ex.cpp create mode 100644 source/modules/asura-core/threading/thread_ex.h delete mode 100644 source/modules/asura-core/threading/thread_impl_posix.cpp delete mode 100644 source/modules/asura-core/threading/thread_impl_posix.h delete mode 100644 source/modules/asura-core/threading/thread_impl_sdl.cpp delete mode 100644 source/modules/asura-core/threading/thread_impl_sdl.h delete mode 100644 source/modules/asura-core/threading/thread_impl_std.cpp delete mode 100644 source/modules/asura-core/threading/thread_impl_std.h delete mode 100644 source/modules/asura-core/threading/thread_impl_win32.cpp delete mode 100644 source/modules/asura-core/threading/thread_impl_win32.h delete mode 100644 source/modules/asura-core/threading/thread_task.cpp delete mode 100644 source/modules/asura-core/threading/thread_task.h (limited to 'source/modules/asura-core') diff --git a/source/modules/asura-core/application.h b/source/modules/asura-core/application.h index 2285430..ccb39d7 100644 --- a/source/modules/asura-core/application.h +++ b/source/modules/asura-core/application.h @@ -32,7 +32,7 @@ namespace AsuraEngine /// /// 管理主循环 /// - ASURA_ABSTRACT class Application + class Application { public: @@ -69,7 +69,7 @@ namespace AsuraEngine /// 传递lua数据太痛苦了。任务在C++里面写,然后注册一个回调,而不是在另一个线程创建lua_State并注册函数,执行后发回数据 /// 给主线程的lua_State。保证只有一个native实例之和一个lua_State绑定。 /// - lua_State* mMainLuaState; + Luax::LuaxVM* mVM; /// /// 载入的Asura libs,会按照队列顺序初始化,并在退出时执行退出函数。 diff --git a/source/modules/asura-core/core_module.cpp b/source/modules/asura-core/core_module.cpp index e69de29..6f484c0 100644 --- a/source/modules/asura-core/core_module.cpp +++ b/source/modules/asura-core/core_module.cpp @@ -0,0 +1,19 @@ +#include "core_module.h" + +using namespace AEThreading; + +namespace AsuraEngine +{ + + void CoreModule::Initialize(Luax::LuaxState& state) + { + // Threading + LUAX_REGISTER_FACTORY(state, ThreadEx); + } + + void CoreModule::Finalize(Luax::LuaxState& state) + { + + } + +} \ No newline at end of file diff --git a/source/modules/asura-core/core_module.h b/source/modules/asura-core/core_module.h index 2cded93..a295b18 100644 --- a/source/modules/asura-core/core_module.h +++ b/source/modules/asura-core/core_module.h @@ -1,10 +1,22 @@ #ifndef __ASURA_CORE_MODULE_H__ #define __ASURA_CORE_MODULE_H__ +#include + +#include "threading/thread_ex.h" + namespace AsuraEngine { - + class CoreModule : public Module + { + public: + + void Initialize(Luax::LuaxState& state) override; + + void Finalize(Luax::LuaxState& state) override; + + }; } diff --git a/source/modules/asura-core/threading/channel.cpp b/source/modules/asura-core/threading/channel.cpp new file mode 100644 index 0000000..e69de29 diff --git a/source/modules/asura-core/threading/channel.h b/source/modules/asura-core/threading/channel.h new file mode 100644 index 0000000..edcd8cb --- /dev/null +++ b/source/modules/asura-core/threading/channel.h @@ -0,0 +1,19 @@ +#ifndef __ASURA_THREAD_CHANNEL_H__ +#define __ASURA_THREAD_CHANNEL_H__ + +#include + +namespace AsuraEngine +{ + namespace Threading + { + + class Channel + { + + }; + + } +} + +#endif \ No newline at end of file diff --git a/source/modules/asura-core/threading/coroutine.cpp b/source/modules/asura-core/threading/coroutine.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/source/modules/asura-core/threading/coroutine.h b/source/modules/asura-core/threading/coroutine.h deleted file mode 100644 index 1ac6b21..0000000 --- a/source/modules/asura-core/threading/coroutine.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef __ASURA_COROUTINE_H__ -#define __ASURA_COROUTINE_H__ - -#include - -namespace AsuraEngine -{ - namespace Threading - { - - /// - /// lua协程,用来做一些逻辑并发操作。 - /// - class Coroutine ASURA_FINAL - : public AEScripting::Portable - { - public: - - LUAX_DECL_FACTORY(Coroutine); - - private: - - LUAX_DECL_METHOD(_New); - LUAX_DECL_METHOD(_Run); - - }; - - } -} - -#endif \ No newline at end of file diff --git a/source/modules/asura-core/threading/thread.cpp b/source/modules/asura-core/threading/thread.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/source/modules/asura-core/threading/thread.h b/source/modules/asura-core/threading/thread.h deleted file mode 100644 index f4d3b48..0000000 --- a/source/modules/asura-core/threading/thread.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef __ASURA_THREAD_H__ -#define __ASURA_THREAD_H__ - -#include -#include - -#include "thread_task.h" - -namespace AsuraEngine -{ - namespace Threading - { - - /// - /// 线程的具体实现,对用户是透明的,一共准备了四种策略: - /// 1: win32 - /// 2: posix - /// 3: SDL - /// 4: std::thread - /// - ASURA_ABSTRACT class ThreadImpl - { - public: - - }; - - /// - /// 线程主体,每个线程维护一个task queue。 - /// - class Thread ASURA_FINAL - : public AEScripting::Portable - { - public: - - LUAX_DECL_FACTORY(Thread); - - bool Enqueue(ThreadTask* task); - - private: - - /// - /// 任务队列。 - /// - std::queue mTaskQueue; - - ThreadImpl* mImpl; - - }; - - } -} - -#endif \ No newline at end of file diff --git a/source/modules/asura-core/threading/thread_ex.cpp b/source/modules/asura-core/threading/thread_ex.cpp new file mode 100644 index 0000000..18b9fc7 --- /dev/null +++ b/source/modules/asura-core/threading/thread_ex.cpp @@ -0,0 +1,19 @@ +#include "thread_ex.h" + +namespace AsuraEngine +{ + namespace Threading + { + + void ThreadEx::Process() + { + + } + + void ThreadEx::RegisterModules() + { + + } + + } +} \ No newline at end of file diff --git a/source/modules/asura-core/threading/thread_ex.h b/source/modules/asura-core/threading/thread_ex.h new file mode 100644 index 0000000..9f63034 --- /dev/null +++ b/source/modules/asura-core/threading/thread_ex.h @@ -0,0 +1,54 @@ +#ifndef __ASURA_THREAD_EX_H__ +#define __ASURA_THREAD_EX_H__ + +#include +#include + +namespace AsuraEngine +{ + namespace Threading + { + + /// + /// ThreadEx有单独的虚拟机,不同的虚拟机通过此对象沟通数据。 + /// + class ThreadEx ASURA_FINAL + : public AEScripting::Portable + , public Threadable + { + public: + + LUAX_DECL_FACTORY(ThreadEx); + + ThreadEx(); + ~ThreadEx(); + + int Process() override; + + private: + + //----------------------------------------------------------------------------// + + LUAX_DECL_METHOD(_New); + + //----------------------------------------------------------------------------// + + /// + /// 给此线程的虚拟机注册Asura对象和接口,注意只有一部分对象可以在虚拟机之间传递。侧重 + /// 于那些数据类型的对象。 + /// + void RegisterModules(); + + ThreadImpl* mImpl; + + /// + /// 线程创建的虚拟机。 + /// + Luax::LuaxVM* mVM; + + }; + + } +} + +#endif \ No newline at end of file diff --git a/source/modules/asura-core/threading/thread_impl_posix.cpp b/source/modules/asura-core/threading/thread_impl_posix.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/source/modules/asura-core/threading/thread_impl_posix.h b/source/modules/asura-core/threading/thread_impl_posix.h deleted file mode 100644 index e69de29..0000000 diff --git a/source/modules/asura-core/threading/thread_impl_sdl.cpp b/source/modules/asura-core/threading/thread_impl_sdl.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/source/modules/asura-core/threading/thread_impl_sdl.h b/source/modules/asura-core/threading/thread_impl_sdl.h deleted file mode 100644 index e69de29..0000000 diff --git a/source/modules/asura-core/threading/thread_impl_std.cpp b/source/modules/asura-core/threading/thread_impl_std.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/source/modules/asura-core/threading/thread_impl_std.h b/source/modules/asura-core/threading/thread_impl_std.h deleted file mode 100644 index e69de29..0000000 diff --git a/source/modules/asura-core/threading/thread_impl_win32.cpp b/source/modules/asura-core/threading/thread_impl_win32.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/source/modules/asura-core/threading/thread_impl_win32.h b/source/modules/asura-core/threading/thread_impl_win32.h deleted file mode 100644 index 5d854cc..0000000 --- a/source/modules/asura-core/threading/thread_impl_win32.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef __ASURA_THREAD_WIN32_H__ -#define __ASURA_THREAD_WIN32_H__ - -#include "../core_config.h" - -#include "thread.h" - -#if ASURA_THREAD_WIN32 - -namespace AsuraEngine -{ - namespace Threading - { - - class ThreadImplWin32 : public ThreadImpl - { - - }; - - } -} - -#endif // #if ASURA_THREAD_WIN32 - -#endif \ No newline at end of file diff --git a/source/modules/asura-core/threading/thread_task.cpp b/source/modules/asura-core/threading/thread_task.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/source/modules/asura-core/threading/thread_task.h b/source/modules/asura-core/threading/thread_task.h deleted file mode 100644 index 19eb113..0000000 --- a/source/modules/asura-core/threading/thread_task.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef __ASURA_THRAD_TASK_H__ -#define __ASURA_THRAD_TASK_H__ - -#include - -namespace AsuraEngine -{ - namespace Threading - { - - /// - /// 希望放在另一个线程处理的任务,继承Task并重写Execute方法。 - /// - ASURA_ABSTRACT class ThreadTask - { - public: - - virtual bool Execute() = 0; - - }; - - } -} - -#endif \ No newline at end of file -- cgit v1.1-26-g67d0