浏览代码

fix for mac & use atomic store on write side to avoid race

Dale Weiler 3 年之前
父节点
当前提交
52df80dccd
共有 1 个文件被更改,包括 2 次插入2 次删除
  1. 2 2
      core/thread/thread_unix.odin

+ 2 - 2
core/thread/thread_unix.odin

@@ -44,7 +44,7 @@ _create :: proc(procedure: Thread_Proc, priority := Thread_Priority.Normal) -> ^
 
 		t.procedure(t)
 
-		t.flags += { .Done }
+		intrinsics.atomic_store(&t.flags, t.flags + { .Done });
 
 		sync.unlock(&t.mutex)
 
@@ -105,7 +105,7 @@ _start :: proc(t: ^Thread) {
 }
 
 _is_done :: proc(t: ^Thread) -> bool {
-	return intrinsics.atomic_and(&t.flags, { .Done }) != nil
+	return .Done in intrinsics.atomic_load(&t.flags);
 }
 
 _join :: proc(t: ^Thread) {