From 4b6e375f958fb6ddf60b98c4ee84eec5548f8244 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Tue, 24 Jun 2025 14:34:28 +0200 Subject: Expand `self_cleanup` documentation. --- core/thread/thread.odin | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/core/thread/thread.odin b/core/thread/thread.odin index f70471d8a..194c7bfef 100644 --- a/core/thread/thread.odin +++ b/core/thread/thread.odin @@ -258,8 +258,10 @@ to execute. The thread will have priority specified by the `priority` parameter. If `self_cleanup` is specified, after the thread finishes the execution of the `fn` procedure, the resources associated with the thread are going to be -automatically freed. **Do not** dereference the `^Thread` pointer, if this -flag is specified. +automatically freed. + +**Do not** dereference the `^Thread` pointer, if this flag is specified. +That includes calling `join`, which needs to dereference ^Thread`. **IMPORTANT**: If `init_context` is specified and the default temporary allocator is used, the thread procedure needs to call `runtime.default_temp_allocator_destroy()` @@ -291,8 +293,10 @@ to execute. The thread will have priority specified by the `priority` parameter. If `self_cleanup` is specified, after the thread finishes the execution of the `fn` procedure, the resources associated with the thread are going to be -automatically freed. **Do not** dereference the `^Thread` pointer, if this -flag is specified. +automatically freed. + +**Do not** dereference the `^Thread` pointer, if this flag is specified. +That includes calling `join`, which needs to dereference ^Thread`. **IMPORTANT**: If `init_context` is specified and the default temporary allocator is used, the thread procedure needs to call `runtime.default_temp_allocator_destroy()` @@ -328,8 +332,10 @@ to execute. The thread will have priority specified by the `priority` parameter. If `self_cleanup` is specified, after the thread finishes the execution of the `fn` procedure, the resources associated with the thread are going to be -automatically freed. **Do not** dereference the `^Thread` pointer, if this -flag is specified. +automatically freed. + +**Do not** dereference the `^Thread` pointer, if this flag is specified. +That includes calling `join`, which needs to dereference ^Thread`. **IMPORTANT**: If `init_context` is specified and the default temporary allocator is used, the thread procedure needs to call `runtime.default_temp_allocator_destroy()` @@ -371,8 +377,10 @@ to execute. The thread will have priority specified by the `priority` parameter. If `self_cleanup` is specified, after the thread finishes the execution of the `fn` procedure, the resources associated with the thread are going to be -automatically freed. **Do not** dereference the `^Thread` pointer, if this -flag is specified. +automatically freed. + +**Do not** dereference the `^Thread` pointer, if this flag is specified. +That includes calling `join`, which needs to dereference ^Thread`. **IMPORTANT**: If `init_context` is specified and the default temporary allocator is used, the thread procedure needs to call `runtime.default_temp_allocator_destroy()` @@ -420,8 +428,10 @@ to execute. The thread will have priority specified by the `priority` parameter. If `self_cleanup` is specified, after the thread finishes the execution of the `fn` procedure, the resources associated with the thread are going to be -automatically freed. **Do not** dereference the `^Thread` pointer, if this -flag is specified. +automatically freed. + +**Do not** dereference the `^Thread` pointer, if this flag is specified. +That includes calling `join`, which needs to dereference ^Thread`. **IMPORTANT**: If `init_context` is specified and the default temporary allocator is used, the thread procedure needs to call `runtime.default_temp_allocator_destroy()` @@ -471,8 +481,10 @@ to execute. The thread will have priority specified by the `priority` parameter. If `self_cleanup` is specified, after the thread finishes the execution of the `fn` procedure, the resources associated with the thread are going to be -automatically freed. **Do not** dereference the `^Thread` pointer, if this -flag is specified. +automatically freed. + +**Do not** dereference the `^Thread` pointer, if this flag is specified. +That includes calling `join`, which needs to dereference ^Thread`. **IMPORTANT**: If `init_context` is specified and the default temporary allocator is used, the thread procedure needs to call `runtime.default_temp_allocator_destroy()` -- cgit v1.2.3