aboutsummaryrefslogtreecommitdiff
path: root/lib/std/Thread
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2024-07-10 05:19:58 -0400
committerGitHub <noreply@github.com>2024-07-10 05:19:58 -0400
commit1f6b3d16644c8727323a1512d555236afbca7d7f (patch)
treeb70a729faa558896265f29a6d3c3e249131ca88d /lib/std/Thread
parentf58ee387c7c9a512d802f819f870190c900cb6e2 (diff)
parentc8e00953623bd3f4a12c8654a83a1b6cac2b2b2f (diff)
downloadzig-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')
-rw-r--r--lib/std/Thread/Pool.zig23
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();