mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 05:44:20 +00:00
32 lines
1.1 KiB
Zig
32 lines
1.1 KiB
Zig
const num_children = 25;
|
|
|
|
pub fn main() !void {
|
|
var arena_instance: std.heap.ArenaAllocator = .init(std.heap.page_allocator);
|
|
defer arena_instance.deinit();
|
|
const arena = arena_instance.allocator();
|
|
|
|
const cpu_count = try std.Thread.getCpuCount();
|
|
var env = try std.process.getEnvMap(arena);
|
|
|
|
var job_server: std.job.Server = try .init(arena, @intCast(cpu_count), &env);
|
|
defer job_server.deinit();
|
|
|
|
var children: [num_children]std.process.Child = undefined;
|
|
for (&children, 0..) |*c, child_num| {
|
|
const child_num_str = try std.fmt.allocPrint(arena, "{d}", .{child_num});
|
|
const argv = try arena.dupe([]const u8, &.{ switch (builtin.os.tag) {
|
|
else => "./worker",
|
|
.windows => ".\\worker.exe",
|
|
}, child_num_str });
|
|
c.* = .init(argv, arena);
|
|
c.env_map = &env;
|
|
}
|
|
|
|
std.log.info("Spawning {d} workers on {d} CPUs", .{ children.len, cpu_count });
|
|
for (&children) |*c| try c.spawn();
|
|
for (&children) |*c| _ = try c.wait();
|
|
std.log.info("All {d} workers exited", .{children.len});
|
|
}
|
|
|
|
const builtin = @import("builtin");
|
|
const std = @import("std");
|