From ee8ef0433e36bf354a717bd4af679a0a5af2e6be Mon Sep 17 00:00:00 2001 From: chai Date: Thu, 20 Dec 2018 18:34:50 +0800 Subject: =?UTF-8?q?*=E4=BF=AE=E6=94=B9=E6=96=87=E4=BB=B6=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/libjin-lua/modules/thread/je_lua_thread.h | 95 +++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 src/libjin-lua/modules/thread/je_lua_thread.h (limited to 'src/libjin-lua/modules/thread/je_lua_thread.h') diff --git a/src/libjin-lua/modules/thread/je_lua_thread.h b/src/libjin-lua/modules/thread/je_lua_thread.h new file mode 100644 index 0000000..acb4c49 --- /dev/null +++ b/src/libjin-lua/modules/thread/je_lua_thread.h @@ -0,0 +1,95 @@ +#include "libjin/jin.h" +#include "common/je_lua_common.h" + +namespace JinEngine +{ + namespace Lua + { + + extern const char* Jin_Lua_Thread; + + class Thread : public Object + { + public: + typedef JinEngine::Threads::Thread::Variant Variant; + typedef JinEngine::Threads::Thread::ThreadRunner ThreadRunner; + + Thread(std::string _name, std::string _code, ThreadRunner runner) + : name(_name) + , code(_code) + { + thread = new JinEngine::Threads::Thread(_name, runner); + } + + ~Thread() + { + delete thread; + } + + bool start(void* p) + { + return thread->start(p); + } + + void wait() + { + thread->wait(); + } + + void send(int slot, const Variant& value) + { + thread->send(slot, value); + } + + bool receive(int slot) + { + return thread->receive(slot); + } + + Variant fetch(int slot) + { + return thread->fetch(slot); + } + + Variant demand(int slot) + { + return thread->demand(slot); + } + + void remove(int slot) + { + thread->remove(slot); + } + + const char* getName() + { + return name.c_str(); + } + + bool isRunning() + { + return thread->isRunning(); + } + + void lock() + { + thread->lock(); + } + + void unlock() + { + thread->unlock(); + } + + const std::string name; + const std::string code; + + private: + JinEngine::Threads::Thread* thread; + + }; + + int luaopen_thread(lua_State* L); + + } // namespace Lua +} // namespace JinEngine \ No newline at end of file -- cgit v1.1-26-g67d0