瀏覽代碼

Use Acquire semantics for the `futex_wait` load shortcut

gingerBill 3 年之前
父節點
當前提交
10cd294cf2
共有 1 個文件被更改,包括 2 次插入2 次删除
  1. 2 2
      core/sync/primitives.odin

+ 2 - 2
core/sync/primitives.odin

@@ -195,7 +195,7 @@ sema_wait_with_timeout :: proc(s: ^Sema, duration: time.Duration) -> bool {
 Futex :: distinct u32
 
 futex_wait :: proc(f: ^Futex, expected: u32) {
-	if u32(atomic_load(f)) != expected {
+	if u32(atomic_load_explicit(f, .Acquire)) != expected {
 		return
 	}
 	
@@ -204,7 +204,7 @@ futex_wait :: proc(f: ^Futex, expected: u32) {
 
 // returns true if the wait happened within the duration, false if it exceeded the time duration
 futex_wait_with_timeout :: proc(f: ^Futex, expected: u32, duration: time.Duration) -> bool {
-	if u32(atomic_load(f)) != expected {
+	if u32(atomic_load_explicit(f, .Acquire)) != expected {
 		return true
 	}
 	if duration <= 0 {