Commit Graph

138 Commits

Author SHA1 Message Date
23a80b8039 [*] Refactor ConditionEx -> IFlexibleConditionVariable 2024-08-08 20:21:03 +01:00
f2e3ceef99 [+] Au[Futex]Countdown 2024-06-30 05:40:13 +01:00
0555e8cc32 [*] Update: WakeOnAddress.hpp comments 2024-06-30 05:13:55 +01:00
c3e898d53d [*] Redo d520b0ce with the lost semaphore copy described in the commit comment
(wtf? did i stash something at the wrong time?)
2024-05-28 19:28:08 +01:00
d520b0ce42 [*] I'm going to let the reference waitaible/woa/futex primitives be copy and movable now.
condvars -> cannot matter, you're creating a new object
mutex -> cannot mater, you're creating a new object, perhaps copy assignment under lock might be required depending on the parent. either way, a copy ctor is not required
semaphore -> copy state in case of the timelime barrier use case. semaphores emulating condvars and similar logic wont mind the overshoot. best case, we do want to copy the previous state as the initial count. worst case, your code is fundamentally broken.
2024-05-28 00:42:24 +01:00
a5a9fa3887 [*] Updated AuTheading::WaitFor prototype
[+/*] Missing YieldPoll MS prototype in public header
2024-05-27 15:04:21 +01:00
30b0fce882 [*] Updated/added FutexBarrier comments and updated AuThreadings README 2024-05-27 14:35:10 +01:00
e4fa5d549e [*] Refactor IAuroraThread 2024-05-27 13:28:57 +01:00
e86a414837 [*] d589ce3549 missed header update 2024-05-11 18:51:16 +01:00
631624dc55 [*] Linux build regressions, and shrink the size of Linux RWLocks to 48 bytes from 64 2024-05-07 14:57:19 +01:00
62917318af [+] (reference futex primitive) AuFutexMutexSpecial = AuThreading::Waitables::FutexWaitableNoVTblMovable
[+] (reference futex primitive) AuFutexMutexSmallest = AuThreading::Waitables::FutexWaitableNoVTblMovableSmallest

...because i cant be arsed
2024-04-16 04:30:31 +01:00
0164919cd9 [+] while_bc 2024-04-13 22:49:05 +01:00
a80f6091c5 [*] Updated WakeOnAddress comments 2024-03-13 09:37:07 +00:00
d14ba6cfd4 [+] AuThreading::EWaitMethod
[+] AuThreading::TryWaitOnAddressSpecial
[+] AuThreading::TryWaitOnAddressSpecialEx
[+] AuThreading::WaitOnAddressSpecial
[+] AuThreading::WaitOnAddressSpecialSteady
2024-03-12 22:50:22 +00:00
41412876b6 [*] Improved AuThreads::Spawn prototypes with new optional finalizer arg 2024-03-10 10:22:50 +00:00
99533c456d [*] Amend 6913daae 2024-03-10 09:57:27 +00:00
6913daae7d [+] bool AuFutexSemaphore::AcquireUntilExactlyEqualAbsNS(AuUInt32 uValue, AuOptional<AuUInt64> qwTimeoutAbs)
[+] bool AuFutexSemaphore::AcquireUntilAtleastAbsNS(AuUInt32 uValue, AuOptional<AuUInt64> qwTimeoutAbs)
2024-03-10 09:28:50 +00:00
cc4d97d6e7 [+] bool AuFutexSemaphore::LockUntilEqualAbsNS(AuUInt32 uValue, AuOptional<AuUInt64> qwTimeoutAbs) 2024-03-10 00:43:17 +00:00
13b61f166c [*] Updated registered LTC digest indices 2024-03-03 03:26:01 +00:00
3004c3de19 [+] Experimental AuThreading::TryWaitOnAddressUntilEqualEx, WaitOnAddressUntilEqual, WaitOnAddressUntilEqualSteady 2024-03-02 23:23:16 +00:00
7038787001 [+] Thread name identities 2024-01-23 23:03:52 +00:00
7b59cab36e [*] eepy 2023-12-31 22:39:31 +00:00
5862dbeacc [+] New generic primitives
[-] AuSemaphore.Unix.hpp
[*] Moved the old pthread based primitives to _removed/*.bak
[+] AuWoASemaphore.Unix.cpp
[+] AuWoASemaphore.Unix.hpp
2023-12-29 16:12:14 +00:00
9c86d1c899 [*] Linux clean up (?) (+typo) 2023-12-23 03:16:43 +00:00
8b4ad9795c [*] Update the FutexSemaphore to wake no more than the requested wake count
[*] Cleanup NTs semaphore
2023-12-06 11:17:50 +00:00
b65d0032dd [*] Minor header updates 2023-12-05 10:16:22 +00:00
43583a1748 [+] IRWLock::CheckSelfThreadIsWriter 2023-12-01 01:15:35 +00:00
216aa01717 [-] Yeetus 2023-11-29 08:50:14 +00:00
22f2e73954 [+] ConditionEx::WaitForSignalAbsNS 2023-11-29 06:08:09 +00:00
daeb5ba06f [*] Reference futex semaphore fix timeout = 0 under ::LockNS 2023-11-18 09:19:10 +00:00
62e8625a11 [+] Aurora::Threading::TryWaitOnAddressEx
[*] Spin on top of Linuxs kernel spin, if in non-emu mode
2023-11-14 14:49:40 +00:00
e071b3d509 [+] WaitOnAddress[Steady](..., AuOptional<bool> optAlreadySpun = {}) arguments
[+] ...slight UWP optimization?
[*] Lift WoA limitation
2023-10-30 15:29:20 +00:00
529eba18c7 [+] IAuroraThread::GetThreadCreationTime 2023-10-13 21:43:59 +01:00
7739652ad3 [*] Minor include header improvements 2023-09-22 00:46:51 +01:00
f59de8b4ae [*] Two typos and change bPreferEmulatedWakeOnAddress to true under NIX 2023-09-20 18:32:02 +01:00
0f62b03da0 [+] AuFutexBarrier::EnterTimedEx 2023-09-20 17:32:17 +01:00
d123850ac0 [+] AuThreads::Spawn 2023-09-20 17:28:36 +01:00
7efde62c3c [+] AuFutexBarrier 2023-09-20 05:18:50 +01:00
42a8218916 [+] AuInitOnce::TryCall 2023-09-20 04:10:53 +01:00
595846cb75 [*] MSVC isn't always inlining lock guards 2023-09-19 02:49:48 +01:00
ff0e32ce02 [*] Improve AuInitOnce API with an 8 byte variant and a locker API
[+] AuInitOnceSmall
2023-09-17 15:42:38 +01:00
d2bf01ffa3 [*] InitOnce should be marked final, even though we cant strip those 8 vtbl ptr bytes 2023-09-17 15:08:48 +01:00
afa2cb5944 [+] AuInitOnce 2023-09-17 13:26:37 +01:00
d661363247 [*] Not deprecated enough 2023-09-12 21:31:34 +01:00
bf03124f92 [+] AuThreading::TryWait 2023-09-12 18:47:25 +01:00
8e54071d60 [-] Remove 2 year old 0.0 WaitFor back-off implementation 2023-09-12 18:30:45 +01:00
f08f4a476a [*] Ehhh. I never liked how I implemented the fallback for MS absolute waits.
We should calculate it via a delta between current NS time to avoid NS/MS clock overflows.
Some platforms and points in time may be more resistant than others. Let's assume monotonic time could be really high, this should help mitigate some bad math and branching caused by timeout overflows caused by stupid MS-precise abs waits (not sure why people would favour these over abs ns)
2023-09-12 17:10:51 +01:00
48dc2e790b [+] IEvent::TrySet()
[+] New atomic logic for AuEvent. With this change, I can stop slandering it as the "shit primitive."
(it's still not the best it could be, but it's an improvement over what i had before)
2023-09-10 14:04:00 +01:00
36a72228db [*] Cleanup/formatting of SMT yields 2023-09-06 17:01:01 +01:00
3d8dd991e0 [*] Adjust non-AURORA_RUNTIME_FORCE_ADAPTIVE_FUTEX futexes 2023-09-06 16:08:41 +01:00