LAAAAAIIIIIIIIN
This commit is contained in:
parent
1f2599f66b
commit
2470cbc12a
@ -214,6 +214,8 @@ namespace Aurora::Async
|
|||||||
void DoSuccessBlocking();
|
void DoSuccessBlocking();
|
||||||
void DoEndBlocking();
|
void DoEndBlocking();
|
||||||
|
|
||||||
|
void DispatchNotifier();
|
||||||
|
|
||||||
WorkerPId_t currentThread_;
|
WorkerPId_t currentThread_;
|
||||||
|
|
||||||
SuccessValue_t success;
|
SuccessValue_t success;
|
||||||
@ -396,11 +398,7 @@ namespace Aurora::Async
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!this->notifier_)
|
DispatchNotifier();
|
||||||
{
|
|
||||||
this->notifier_ = this->currentThread_.pool->NewWorkItem(this->currentThread_, AuSPtr<IWorkItemHandler>(AuSharedFromThis(), &this->tickAdapter));
|
|
||||||
}
|
|
||||||
this->notifier_->Dispatch();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -417,10 +415,22 @@ namespace Aurora::Async
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this->notifier_->Dispatch();
|
DispatchNotifier();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<class SuccessValue_t, class ErrorValue_t>
|
||||||
|
inline void Promise<SuccessValue_t, ErrorValue_t>::DispatchNotifier()
|
||||||
|
{
|
||||||
|
if (!this->notifier_)
|
||||||
|
{
|
||||||
|
this->notifier_ = this->currentThread_.pool->NewWorkItem(this->currentThread_, AuSPtr<IWorkItemHandler>(AuSharedFromThis(), &this->tickAdapter));
|
||||||
|
}
|
||||||
|
|
||||||
|
SysAssert(this->notifier_);
|
||||||
|
this->notifier_->Dispatch();
|
||||||
|
}
|
||||||
|
|
||||||
template<class SuccessValue_t, class ErrorValue_t>
|
template<class SuccessValue_t, class ErrorValue_t>
|
||||||
inline bool Promise<SuccessValue_t, ErrorValue_t>::WaitBeforeWork(const AuSPtr<IWorkItem> &startingBarrier)
|
inline bool Promise<SuccessValue_t, ErrorValue_t>::WaitBeforeWork(const AuSPtr<IWorkItem> &startingBarrier)
|
||||||
{
|
{
|
||||||
@ -549,7 +559,7 @@ namespace Aurora::Async
|
|||||||
|
|
||||||
if (failFast)
|
if (failFast)
|
||||||
{
|
{
|
||||||
in->OnFailure(this->bHasError_ ? &this->success : nullptr);
|
in->OnFailure(this->bHasError_ ? &this->error : nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
return AuSPtr<Promise>(AuSharedFromThis());
|
return AuSPtr<Promise>(AuSharedFromThis());
|
||||||
|
@ -202,6 +202,12 @@ namespace Aurora::Async
|
|||||||
|
|
||||||
void TerminateSceduledTasks(IThreadPoolInternal *pool, WorkerId_t target)
|
void TerminateSceduledTasks(IThreadPoolInternal *pool, WorkerId_t target)
|
||||||
{
|
{
|
||||||
|
if (!gSchedLock)
|
||||||
|
{
|
||||||
|
SysAssert(gEntries.empty());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
AU_LOCK_GUARD(gSchedLock);
|
AU_LOCK_GUARD(gSchedLock);
|
||||||
|
|
||||||
for (auto itr = gEntries.begin(); itr != gEntries.end(); )
|
for (auto itr = gEntries.begin(); itr != gEntries.end(); )
|
||||||
|
@ -16,7 +16,7 @@ namespace Aurora::Memory
|
|||||||
{
|
{
|
||||||
AuSPtr<Heap> AllocateDivision(AuUInt32 heap, AuUInt32 alignment) override
|
AuSPtr<Heap> AllocateDivision(AuUInt32 heap, AuUInt32 alignment) override
|
||||||
{
|
{
|
||||||
return AllocateDivisionGlobal(heap, alignment);
|
return AllocateDivisionGlobal(this, heap, alignment);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *_ZAlloc(Types::size_t length) override
|
void *_ZAlloc(Types::size_t length) override
|
||||||
|
Loading…
Reference in New Issue
Block a user