/*** Copyright (C) 2023 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: WakeOnAddress.hpp Date: 2023-3-11 Author: Reece ***/ #pragma once namespace Aurora::Threading { AUKN_SYM void WakeAllOnAddress(void *pTargetAddress); AUKN_SYM void WakeOnAddress(void *pTargetAddress); AUKN_SYM void WakeNOnAddress(void *pTargetAddress, AuUInt8 uNMaximumThreads); AUKN_SYM bool TryWaitOnAddress(void *pTargetAddress, void *pCompareAddress, AuUInt8 uWordSize); // Relative timeout variant of nanosecond resolution WoA. nanoseconds in steady clock time. 0 = indefinite AUKN_SYM bool WaitOnAddress(void *pTargetAddress, void *pCompareAddress, AuUInt8 uWordSize, AuUInt64 qwNanoseconds); // Absolute timeout variant of nanosecond resolution WoA. Nanoseconds are in steady clock time. 0 = indefinite AUKN_SYM bool WaitOnAddressSteady(void *pTargetAddress, void *pCompareAddress, AuUInt8 uWordSize, AuUInt64 qwNanoseconds); }