diff options
author | chai <chaifix@163.com> | 2019-03-30 11:59:35 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-03-30 11:59:35 +0800 |
commit | c270d033fa04873ee7a8925dbb00cae5edc4555c (patch) | |
tree | ee27a45c5b946b08dd7a726a925028f6ca3eabf1 /source/modules/asura-utils/threading/thread.cpp | |
parent | 771df5c31cd5653467fd6e76c1a3e002ca39582c (diff) |
*misc
Diffstat (limited to 'source/modules/asura-utils/threading/thread.cpp')
-rw-r--r-- | source/modules/asura-utils/threading/thread.cpp | 43 |
1 files changed, 28 insertions, 15 deletions
diff --git a/source/modules/asura-utils/threading/thread.cpp b/source/modules/asura-utils/threading/thread.cpp index 0f4f5da..fc397d2 100644 --- a/source/modules/asura-utils/threading/thread.cpp +++ b/source/modules/asura-utils/threading/thread.cpp @@ -41,8 +41,10 @@ namespace AsuraEngine bool Thread::AddTask(Task* task) { - lock(mTaskQueueMutex); - mTaskQueue.push(task); + lock(mTaskQueueMutex) + { + mTaskQueue.push(task); + } return true; } @@ -96,25 +98,31 @@ namespace AsuraEngine { ASSERT(mImpl); - lock(mStateMutex); - mState = THREAD_STATE_PAUSED; + lock(mStateMutex) + { + mState = THREAD_STATE_PAUSED; + } } void Thread::Resume() { ASSERT(mImpl); - lock(mStateMutex); - if(mState == THREAD_STATE_PAUSED) - mState = THREAD_STATE_RUNNING; + lock(mStateMutex) + { + if (mState == THREAD_STATE_PAUSED) + mState = THREAD_STATE_RUNNING; + } } void Thread::Stop() { ASSERT(mImpl); - lock(mStateMutex); - mState = THREAD_STATE_STOPPED; + lock(mStateMutex) + { + mState = THREAD_STATE_STOPPED; + } } void Thread::PauseSync() @@ -144,9 +152,10 @@ namespace AsuraEngine ThreadState Thread::GetState() { ThreadState state; - mStateMutex.Lock(); - state = mState; - mStateMutex.Unlock(); + lock(mStateMutex) + { + state = mState; + } return state; } @@ -183,7 +192,7 @@ namespace AsuraEngine return mName; } - void Thread::Process() + int Thread::Process() { LUAX_STATE(mLuaThread); @@ -203,6 +212,7 @@ namespace AsuraEngine } else if (mType == THREAD_TYPE_IMMEDIATE) { + // unsafe task->Invoke(mCallbackThread); this->LuaxRelease<Task>(state, task); } @@ -230,14 +240,17 @@ namespace AsuraEngine // ״̬ΪIdle Idle(); + + return 0; } /// /// ӳģʽص /// - void Thread::Post() + void Thread::Dispatch() { - ASSERT(mType == THREAD_TYPE_DEFERRED); + if (mType != THREAD_TYPE_DEFERRED) + return; LUAX_STATE(mLuaThread); while (!mFinishedTasks.empty()) |