Browse Source

Move thread initialization variables in thread_unix.odin

gingerBill 3 years ago
parent
commit
d165de0d4d
1 changed files with 6 additions and 2 deletions
  1. 6 2
      core/thread/thread_unix.odin

+ 6 - 2
core/thread/thread_unix.odin

@@ -76,6 +76,9 @@ _create :: proc(procedure: Thread_Proc, priority := Thread_Priority.Normal) -> ^
 		return nil
 		return nil
 	}
 	}
 	thread.creation_allocator = context.allocator
 	thread.creation_allocator = context.allocator
+	
+	sync.mutex_init(&thread.start_mutex)
+	sync.condition_init(&thread.start_gate, &thread.start_mutex)
 
 
 	// Set thread priority.
 	// Set thread priority.
 	policy: i32
 	policy: i32
@@ -96,12 +99,13 @@ _create :: proc(procedure: Thread_Proc, priority := Thread_Priority.Normal) -> ^
 
 
 	if unix.pthread_create(&thread.unix_thread, &attrs, __linux_thread_entry_proc, thread) != 0 {
 	if unix.pthread_create(&thread.unix_thread, &attrs, __linux_thread_entry_proc, thread) != 0 {
 		free(thread, thread.creation_allocator)
 		free(thread, thread.creation_allocator)
+		
+		sync.condition_destroy(&thread.start_gate)
+		sync.mutex_destroy(&thread.start_mutex)
 		return nil
 		return nil
 	}
 	}
 	thread.procedure = procedure
 	thread.procedure = procedure
 
 
-	sync.mutex_init(&thread.start_mutex)
-	sync.condition_init(&thread.start_gate, &thread.start_mutex)
 
 
 	return thread
 	return thread
 }
 }