diff --git a/core/sync/extended.odin b/core/sync/extended.odin index 24f7c096c..2cca6f961 100644 --- a/core/sync/extended.odin +++ b/core/sync/extended.odin @@ -202,7 +202,7 @@ benaphore_lock :: proc(b: ^Benaphore) { } benaphore_try_lock :: proc(b: ^Benaphore) -> bool { - v, _ := atomic_compare_exchange_strong_explicit(&b.counter, 1, 0, .Acquire, .Acquire) + v, _ := atomic_compare_exchange_strong_explicit(&b.counter, 0, 1, .Acquire, .Acquire) return v == 0 } @@ -243,7 +243,7 @@ recursive_benaphore_try_lock :: proc(b: ^Recursive_Benaphore) -> bool { atomic_add_explicit(&b.counter, 1, .Acquire) } - if v, _ := atomic_compare_exchange_strong_explicit(&b.counter, 1, 0, .Acquire, .Acquire); v != 0 { + if v, _ := atomic_compare_exchange_strong_explicit(&b.counter, 0, 1, .Acquire, .Acquire); v != 0 { return false } // inside the lock diff --git a/core/sync/primitives_internal.odin b/core/sync/primitives_internal.odin index 15967d45e..de9aca991 100644 --- a/core/sync/primitives_internal.odin +++ b/core/sync/primitives_internal.odin @@ -10,7 +10,7 @@ when #config(ODIN_SYNC_RECURSIVE_MUTEX_USE_FUTEX, true) { _recursive_mutex_lock :: proc(m: ^Recursive_Mutex) { tid := Futex(current_thread_id()) for { - prev_owner := atomic_compare_exchange_strong_explicit(&m.impl.owner, tid, 0, .Acquire, .Acquire) + prev_owner := atomic_compare_exchange_strong_explicit(&m.impl.owner, 0, tid, .Acquire, .Acquire) switch prev_owner { case 0, tid: m.impl.recursion += 1 @@ -36,7 +36,7 @@ when #config(ODIN_SYNC_RECURSIVE_MUTEX_USE_FUTEX, true) { _recursive_mutex_try_lock :: proc(m: ^Recursive_Mutex) -> bool { tid := Futex(current_thread_id()) - prev_owner := atomic_compare_exchange_strong_explicit(&m.impl.owner, tid, 0, .Acquire, .Acquire) + prev_owner := atomic_compare_exchange_strong_explicit(&m.impl.owner, 0, tid, .Acquire, .Acquire) switch prev_owner { case 0, tid: m.impl.recursion += 1 diff --git a/core/sync/sema_internal.odin b/core/sync/sema_internal.odin index 8cf157708..d265caa81 100644 --- a/core/sync/sema_internal.odin +++ b/core/sync/sema_internal.odin @@ -25,7 +25,7 @@ when #config(ODIN_SYNC_SEMA_USE_FUTEX, true) { futex_wait(&s.impl.count, u32(original_count)) original_count = s.impl.count } - if original_count == atomic_compare_exchange_strong(&s.impl.count, original_count-1, original_count) { + if original_count == atomic_compare_exchange_strong(&s.impl.count, original_count, original_count-1) { return } } @@ -49,7 +49,7 @@ when #config(ODIN_SYNC_SEMA_USE_FUTEX, true) { } original_count = s.impl.count } - if original_count == atomic_compare_exchange_strong(&s.impl.count, original_count-1, original_count) { + if original_count == atomic_compare_exchange_strong(&s.impl.count, original_count, original_count-1) { return true } }