zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 69f9395b382eb564285367e539d43dc6c8edd257 (tree)
parent ff883dd6ce910e2a0aa301e1ee84d93f53cf8765
Author: Loris Cro <kappaloris@gmail.com>
Date:   Fri,  7 Nov 2025 13:33:45 +0100

fix logic bug in groupAsync

Diffstat:
Mlib/std/Io/Threaded.zig | 8++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lib/std/Io/Threaded.zig b/lib/std/Io/Threaded.zig @@ -695,10 +695,6 @@ fn groupAsync( t.mutex.lock(); - // Append to the group linked list inside the mutex to make `Io.Group.async` thread-safe. - gc.node = .{ .next = @ptrCast(@alignCast(group.token)) }; - group.token = &gc.node; - if (t.available_thread_count == 0) { if (t.cpu_count != 0 and t.threads.items.len >= t.cpu_count) { t.mutex.unlock(); @@ -727,6 +723,10 @@ fn groupAsync( t.available_thread_count -= 1; } + // Append to the group linked list inside the mutex to make `Io.Group.async` thread-safe. + gc.node = .{ .next = @ptrCast(@alignCast(group.token)) }; + group.token = &gc.node; + t.run_queue.prepend(&gc.closure.node); // This needs to be done before unlocking the mutex to avoid a race with