[*] Linux/Modern NT regression in new optimized event wait path
This commit is contained in:
parent
22efbff12f
commit
d727859cc2
@ -52,13 +52,17 @@ namespace Aurora::Threading::Primitives
|
||||
|
||||
while (!AtomicIsEventSetLogicNoSpinNoLock())
|
||||
{
|
||||
bool bStatus {};
|
||||
EventBits bits;
|
||||
bits.state = AuAtomicLoad(&this->state_);
|
||||
|
||||
if (bits.bTriggered)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
AuAtomicAdd(pSleepCounter, 1u);
|
||||
bool bStatus = InternalLTSWaitOnAddressHighRes(&this->state_, &bits.state, sizeof(bits.state), uEndTime);
|
||||
bStatus = InternalLTSWaitOnAddressHighRes(&this->state_, &bits.state, sizeof(bits.state), uEndTime);
|
||||
AuAtomicSub(pSleepCounter, 1u);
|
||||
|
||||
if (!bStatus)
|
||||
@ -66,11 +70,6 @@ namespace Aurora::Threading::Primitives
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SMPPause();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -114,13 +113,17 @@ namespace Aurora::Threading::Primitives
|
||||
|
||||
while (!AtomicIsEventSetLogicNoSpinNoLock())
|
||||
{
|
||||
bool bStatus {};
|
||||
EventBits bits;
|
||||
bits.state = AuAtomicLoad(&this->state_);
|
||||
|
||||
if (bits.bTriggered)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
AuAtomicAdd(pSleepCounter, 1u);
|
||||
bool bStatus = InternalLTSWaitOnAddressHighRes(&this->state_, &bits.state, sizeof(bits.state), uEndTime);
|
||||
bStatus = InternalLTSWaitOnAddressHighRes(&this->state_, &bits.state, sizeof(bits.state), uEndTime);
|
||||
AuAtomicSub(pSleepCounter, 1u);
|
||||
|
||||
if (!bStatus)
|
||||
@ -128,11 +131,6 @@ namespace Aurora::Threading::Primitives
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SMPPause();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user