[*] cleanup: added gUseNativeWaitSemapahore
This commit is contained in:
parent
25b933aafa
commit
48075bfda7
@ -90,5 +90,7 @@ namespace Aurora
|
||||
!gRuntimeConfig.threadingConfig.bPerferNt51XpCondvarsOver8 &&
|
||||
(pRtlWaitOnAddress || AuBuild::kCurrentPlatform != AuBuild::EPlatform::ePlatformWin32)) ||
|
||||
!pNtWaitForKeyedEvent;
|
||||
|
||||
gUseNativeWaitSemapahore = bool(pWaitOnAddress);
|
||||
}
|
||||
}
|
@ -106,4 +106,5 @@ namespace Aurora
|
||||
|
||||
inline bool gUseNativeWaitMutex {};
|
||||
inline bool gUseNativeWaitCondvar {};
|
||||
inline bool gUseNativeWaitSemapahore {};
|
||||
}
|
@ -14,4 +14,6 @@
|
||||
namespace Aurora
|
||||
{
|
||||
void InitProcAddresses();
|
||||
|
||||
inline bool gUseNativeWaitRWLock {};
|
||||
}
|
@ -65,7 +65,7 @@ namespace Aurora::Threading::Primitives
|
||||
AuUInt64 uStart = AuTime::SteadyClockNS();
|
||||
AuUInt64 uEnd = uTimeout ? uStart + uTimeout : 0;
|
||||
|
||||
if (pWaitOnAddress)
|
||||
if (gUseNativeWaitSemapahore)
|
||||
{
|
||||
AuUInt32 uYieldCounter {};
|
||||
auto old = this->value_;
|
||||
@ -120,9 +120,21 @@ namespace Aurora::Threading::Primitives
|
||||
|
||||
void SemaphoreImpl::Unlock(long count)
|
||||
{
|
||||
if (!pWaitOnAddress)
|
||||
if (gUseNativeWaitSemapahore)
|
||||
{
|
||||
AuAtomicAdd<AuInt32>(&this->value_, count);
|
||||
if (count == 1)
|
||||
{
|
||||
pWakeByAddressSingle(&this->value_);
|
||||
}
|
||||
else
|
||||
{
|
||||
pWakeByAddressAll(&this->value_);
|
||||
}
|
||||
this->mutex.Lock();
|
||||
}
|
||||
else
|
||||
{
|
||||
AuAtomicAdd<AuInt32>(&this->value_, count);
|
||||
|
||||
if (count == 1)
|
||||
@ -139,18 +151,6 @@ namespace Aurora::Threading::Primitives
|
||||
}
|
||||
this->mutex.Unlock();
|
||||
}
|
||||
else
|
||||
{
|
||||
AuAtomicAdd<AuInt32>(&this->value_, count);
|
||||
if (count == 1)
|
||||
{
|
||||
pWakeByAddressSingle(&this->value_);
|
||||
}
|
||||
else
|
||||
{
|
||||
pWakeByAddressAll(&this->value_);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SemaphoreImpl::Unlock()
|
||||
|
Loading…
Reference in New Issue
Block a user