aboutsummaryrefslogtreecommitdiff
path: root/lib/std/Io/ThreadPool.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2025-07-10 16:44:05 -0700
committerAndrew Kelley <andrew@ziglang.org>2025-10-29 06:20:48 -0700
commit30be75ca4052dc027b21ec987444d16f2c22886d (patch)
treea436dc44a9df1a3b31efa3d1a825817fbc3848a8 /lib/std/Io/ThreadPool.zig
parentf5d8492b1f8ab51c5c7157e8de9610067cbaa6f9 (diff)
downloadzig-30be75ca4052dc027b21ec987444d16f2c22886d.tar.gz
zig-30be75ca4052dc027b21ec987444d16f2c22886d.zip
std.Io.ThreadPool: fix asyncDetached
Diffstat (limited to 'lib/std/Io/ThreadPool.zig')
-rw-r--r--lib/std/Io/ThreadPool.zig7
1 files changed, 3 insertions, 4 deletions
diff --git a/lib/std/Io/ThreadPool.zig b/lib/std/Io/ThreadPool.zig
index 92f97c37fd..f356187748 100644
--- a/lib/std/Io/ThreadPool.zig
+++ b/lib/std/Io/ThreadPool.zig
@@ -494,13 +494,12 @@ fn async(
const DetachedClosure = struct {
pool: *Pool,
func: *const fn (context: *anyopaque) void,
- run_node: Pool.RunQueue.Node = .{ .data = .{ .runFn = runFn } },
+ runnable: Runnable = .{ .runFn = runFn },
context_alignment: std.mem.Alignment,
context_len: usize,
fn runFn(runnable: *Pool.Runnable, _: ?usize) void {
- const run_node: *Pool.RunQueue.Node = @fieldParentPtr("data", runnable);
- const closure: *DetachedClosure = @alignCast(@fieldParentPtr("run_node", run_node));
+ const closure: *DetachedClosure = @alignCast(@fieldParentPtr("runnable", runnable));
closure.func(closure.contextPointer());
const gpa = closure.pool.allocator;
const base: [*]align(@alignOf(DetachedClosure)) u8 = @ptrCast(closure);
@@ -544,7 +543,7 @@ fn asyncDetached(
.context_len = context.len,
};
@memcpy(closure.contextPointer()[0..context.len], context);
- pool.run_queue.prepend(&closure.run_node);
+ pool.run_queue.prepend(&closure.runnable.node);
if (pool.threads.items.len < pool.threads.capacity) {
pool.threads.addOneAssumeCapacity().* = std.Thread.spawn(.{