aboutsummaryrefslogtreecommitdiff
path: root/core/thread/thread_windows.odin
diff options
context:
space:
mode:
authorhikari <ftphikari@gmail.com>2023-06-07 19:11:16 +0300
committerhikari <ftphikari@gmail.com>2023-06-07 19:11:16 +0300
commitdcf4e51787119d8dcf86ca0195d3a07aea6d47a8 (patch)
tree0b5cc5674de634e52d4a2fdbdbee1618007801da /core/thread/thread_windows.odin
parent7dc09ed4501d0a7b256a05e6467cd86a262367ae (diff)
[core:thread] Added `self_cleanup` flag to properly auto-clean threads
Diffstat (limited to 'core/thread/thread_windows.odin')
-rw-r--r--core/thread/thread_windows.odin6
1 files changed, 6 insertions, 0 deletions
diff --git a/core/thread/thread_windows.odin b/core/thread/thread_windows.odin
index e62071a1f..eace9a926 100644
--- a/core/thread/thread_windows.odin
+++ b/core/thread/thread_windows.odin
@@ -47,6 +47,12 @@ _create :: proc(procedure: Thread_Proc, priority: Thread_Priority) -> ^Thread {
intrinsics.atomic_store(&t.flags, t.flags + {.Done})
+ if t.self_cleanup {
+ win32.CloseHandle(t.win32_thread)
+ t.win32_thread = win32.INVALID_HANDLE
+ free(t, t.creation_allocator)
+ }
+
return 0
}