diff options
Diffstat (limited to 'source/modules/asura-utils/threading')
-rw-r--r-- | source/modules/asura-utils/threading/task.h | 3 | ||||
-rw-r--r-- | source/modules/asura-utils/threading/thread.cpp | 4 |
2 files changed, 5 insertions, 2 deletions
diff --git a/source/modules/asura-utils/threading/task.h b/source/modules/asura-utils/threading/task.h index 3b3a79c..9073045 100644 --- a/source/modules/asura-utils/threading/task.h +++ b/source/modules/asura-utils/threading/task.h @@ -12,8 +12,7 @@ namespace AsuraEngine /// /// ϣһ̴̳߳TaskдExecute /// - ASURA_ABSTRACT class Task - : public virtual AEScripting::NativeAccessor + ASURA_ABSTRACT class Task : public AEScripting::Object { public: diff --git a/source/modules/asura-utils/threading/thread.cpp b/source/modules/asura-utils/threading/thread.cpp index fc397d2..0899485 100644 --- a/source/modules/asura-utils/threading/thread.cpp +++ b/source/modules/asura-utils/threading/thread.cpp @@ -43,6 +43,7 @@ namespace AsuraEngine { lock(mTaskQueueMutex) { + task->Retain(); mTaskQueue.push(task); } return true; @@ -207,6 +208,7 @@ namespace AsuraEngine if (mType == THREAD_TYPE_DEFERRED) { mFinishedMutex.Lock(); + task->Retain(); mFinishedTasks.push(task); mFinishedMutex.Unlock(); } @@ -218,6 +220,7 @@ namespace AsuraEngine } mTaskQueueMutex.Lock(); mTaskQueue.pop(); + task->Release(); mTaskQueueMutex.Unlock(); } } @@ -262,6 +265,7 @@ namespace AsuraEngine this->LuaxRelease<Task>(state, task); mFinishedMutex.Lock(); mFinishedTasks.pop(); + task->Release(); mFinishedMutex.Unlock(); } } |