summaryrefslogtreecommitdiff
path: root/source/modules/asura-utils/threading
diff options
context:
space:
mode:
Diffstat (limited to 'source/modules/asura-utils/threading')
-rw-r--r--source/modules/asura-utils/threading/task.h3
-rw-r--r--source/modules/asura-utils/threading/thread.cpp4
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();
}
}