diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2024-07-10 05:19:58 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-10 05:19:58 -0400 |
| commit | 1f6b3d16644c8727323a1512d555236afbca7d7f (patch) | |
| tree | b70a729faa558896265f29a6d3c3e249131ca88d /lib/std/Thread/Pool.zig | |
| parent | f58ee387c7c9a512d802f819f870190c900cb6e2 (diff) | |
| parent | c8e00953623bd3f4a12c8654a83a1b6cac2b2b2f (diff) | |
| download | zig-1f6b3d16644c8727323a1512d555236afbca7d7f.tar.gz zig-1f6b3d16644c8727323a1512d555236afbca7d7f.zip | |
Merge pull request #20551 from mochalins/std_thread_pool_fix
fix: Update `spawn`'s `runFn` signature
Diffstat (limited to 'lib/std/Thread/Pool.zig')
| -rw-r--r-- | lib/std/Thread/Pool.zig | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/lib/std/Thread/Pool.zig b/lib/std/Thread/Pool.zig index 179f2f8521..86bac7ce46 100644 --- a/lib/std/Thread/Pool.zig +++ b/lib/std/Thread/Pool.zig @@ -223,7 +223,7 @@ pub fn spawn(pool: *Pool, comptime func: anytype, args: anytype) !void { pool: *Pool, run_node: RunQueue.Node = .{ .data = .{ .runFn = runFn } }, - fn runFn(runnable: *Runnable) void { + fn runFn(runnable: *Runnable, _: ?usize) void { const run_node: *RunQueue.Node = @fieldParentPtr("data", runnable); const closure: *@This() = @alignCast(@fieldParentPtr("run_node", run_node)); @call(.auto, func, closure.arguments); @@ -254,6 +254,27 @@ pub fn spawn(pool: *Pool, comptime func: anytype, args: anytype) !void { pool.cond.signal(); } +test spawn { + const TestFn = struct { + fn checkRun(completed: *bool) void { + completed.* = true; + } + }; + + var completed: bool = false; + + { + var pool: Pool = undefined; + try pool.init(.{ + .allocator = std.testing.allocator, + }); + defer pool.deinit(); + try pool.spawn(TestFn.checkRun, .{&completed}); + } + + try std.testing.expectEqual(true, completed); +} + fn worker(pool: *Pool) void { pool.mutex.lock(); defer pool.mutex.unlock(); |
