/*** Copyright (C) 2023 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: AuConditionMutex.Linux.hpp Date: 2023-8-11 Author: Reece ***/ #pragma once #include "AuIConditionMutexEx.hpp" namespace Aurora::Threading::Primitives { struct LinuxConditionMutex final : IConditionMutexEx { LinuxConditionMutex(); ~LinuxConditionMutex(); bool TryLock() override; void Lock() override; void Unlock() override; AuUInt GetOSHandle() override; auline bool TryLockNoSpin(); auline bool TryLockHeavy(); private: AuUInt32 uState_ {}; AuUInt32 uSleeping_ {}; }; using ConditionMutexImpl = LinuxConditionMutex; }