[*] bug fixes
This commit is contained in:
parent
be9f47c4bb
commit
957338d0e3
@ -21,7 +21,7 @@
|
|||||||
namespace Aurora::Async
|
namespace Aurora::Async
|
||||||
{
|
{
|
||||||
WorkItem::WorkItem(IThreadPoolInternal *owner,
|
WorkItem::WorkItem(IThreadPoolInternal *owner,
|
||||||
const WorkerPId_t &worker,
|
AuOptional<WorkerPId_t> worker,
|
||||||
const AuSPtr<IWorkItemHandler> &task) :
|
const AuSPtr<IWorkItemHandler> &task) :
|
||||||
worker_(worker), task_(task), owner_(owner),
|
worker_(worker), task_(task), owner_(owner),
|
||||||
finishedEvent_(false, true, true)
|
finishedEvent_(false, true, true)
|
||||||
@ -686,6 +686,8 @@ namespace Aurora::Async
|
|||||||
{
|
{
|
||||||
if (auto pLoopSource = this->pIOWatchLS)
|
if (auto pLoopSource = this->pIOWatchLS)
|
||||||
{
|
{
|
||||||
|
AuSPtr<AuIO::IIOProcessor> pIOProcessor;
|
||||||
|
|
||||||
if (this->pIOWatch)
|
if (this->pIOWatch)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
@ -694,10 +696,13 @@ namespace Aurora::Async
|
|||||||
auto pState = this->GetState();
|
auto pState = this->GetState();
|
||||||
if (!pState)
|
if (!pState)
|
||||||
{
|
{
|
||||||
return false;
|
pIOProcessor = this->owner_->ToThreadPool()->GetIOProcessor(AuAsync::GetCurrentWorkerPId());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pIOProcessor = pState->singletons.GetIOProcessor(this->worker_.value());
|
||||||
}
|
}
|
||||||
|
|
||||||
auto pIOProcessor = pState->singletons.GetIOProcessor(this->worker_.value());
|
|
||||||
if (!pIOProcessor)
|
if (!pIOProcessor)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@ -817,6 +822,6 @@ namespace Aurora::Async
|
|||||||
{
|
{
|
||||||
pWorker = AuUnsafeRaiiToShared(static_cast<IAsyncApp *>(gAsyncApp));
|
pWorker = AuUnsafeRaiiToShared(static_cast<IAsyncApp *>(gAsyncApp));
|
||||||
}
|
}
|
||||||
return AuMakeShared<WorkItem>((IThreadPoolInternal *)ToInternal(pWorker).get(), WorkerPId_t {}, AuSPtr<IWorkItemHandler>{});
|
return AuMakeShared<WorkItem>((IThreadPoolInternal *)ToInternal(pWorker).get(), AuOptional<WorkerPId_t> {}, AuSPtr<IWorkItemHandler>{});
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -20,7 +20,7 @@ namespace Aurora::Async
|
|||||||
AuEnableSharedFromThis<WorkItem>
|
AuEnableSharedFromThis<WorkItem>
|
||||||
{
|
{
|
||||||
WorkItem(IThreadPoolInternal *owner,
|
WorkItem(IThreadPoolInternal *owner,
|
||||||
const WorkerPId_t &worker,
|
AuOptional<WorkerPId_t> worker,
|
||||||
const AuSPtr<IWorkItemHandler> &task);
|
const AuSPtr<IWorkItemHandler> &task);
|
||||||
~WorkItem();
|
~WorkItem();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user