fix logic bug in groupAsync

This commit is contained in:
Loris Cro 2025-11-07 13:33:45 +01:00
parent b80e43903f
commit c199124a84

View File

@ -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