Fix race condition with #soa

This commit is contained in:
gingerBill
2024-02-13 16:54:41 +00:00
parent cbfb32c34c
commit d496dbf3a0
3 changed files with 24 additions and 15 deletions

View File

@@ -107,6 +107,22 @@ gb_internal void thread_set_name (Thread *t, char const *name);
gb_internal void yield_thread(void);
gb_internal void yield_process(void);
struct Wait_Signal {
Futex futex;
};
gb_internal void wait_signal_until_available(Wait_Signal *ws) {
if (ws->futex.load() == 0) {
futex_wait(&ws->futex, 1);
}
}
gb_internal void wait_signal_set(Wait_Signal *ws) {
ws->futex.store(1);
futex_broadcast(&ws->futex);
}
struct MutexGuard {
MutexGuard() = delete;