aboutsummaryrefslogtreecommitdiff
path: root/core/thread
diff options
context:
space:
mode:
Diffstat (limited to 'core/thread')
-rw-r--r--core/thread/thread_pool.odin8
1 files changed, 6 insertions, 2 deletions
diff --git a/core/thread/thread_pool.odin b/core/thread/thread_pool.odin
index da5e116ff..7e2489013 100644
--- a/core/thread/thread_pool.odin
+++ b/core/thread/thread_pool.odin
@@ -175,10 +175,12 @@ pool_stop_task :: proc(pool: ^Pool, user_index: int, exit_code: int = 1) -> bool
intrinsics.atomic_sub(&pool.num_outstanding, 1)
intrinsics.atomic_sub(&pool.num_in_processing, 1)
+ old_thread_user_index := t.user_index
+
destroy(t)
replacement := create(pool_thread_runner)
- replacement.user_index = t.user_index
+ replacement.user_index = old_thread_user_index
replacement.data = data
data.task = {}
pool.threads[i] = replacement
@@ -207,10 +209,12 @@ pool_stop_all_tasks :: proc(pool: ^Pool, exit_code: int = 1) {
intrinsics.atomic_sub(&pool.num_outstanding, 1)
intrinsics.atomic_sub(&pool.num_in_processing, 1)
+ old_thread_user_index := t.user_index
+
destroy(t)
replacement := create(pool_thread_runner)
- replacement.user_index = t.user_index
+ replacement.user_index = old_thread_user_index
replacement.data = data
data.task = {}
pool.threads[i] = replacement