Jelajahi Sumber

pool_join should look at .Done.

Jeroen van Rijn 3 tahun lalu
induk
melakukan
6c0e2e2a53
1 mengubah file dengan 5 tambahan dan 8 penghapusan
  1. 5 8
      core/thread/thread_pool.odin

+ 5 - 8
core/thread/thread_pool.odin

@@ -101,16 +101,13 @@ pool_join :: proc(pool: ^Pool) {
 	intrinsics.atomic_store(&pool.is_running, false)
 	sync.post(&pool.sem_available, len(pool.threads))
 
-	yield()
-
 	// Because we already stopped the pool, there's no need to take a lock here.
-
-	started_count: int
-	for started_count < len(pool.threads) {
-		started_count = 0
+	done_count: int
+	for done_count < len(pool.threads) {
+		done_count = 0
 		for t in pool.threads {
-			if .Started in t.flags {
-				started_count += 1
+			if .Done in t.flags {
+				done_count += 1
 				if .Joined not_in t.flags {
 					join(t)
 				}