Function init [src]

Prototype

pub fn init(pool: *Pool, options: Options) !void

Parameters

pool: *Pooloptions: Options

Source

pub fn init(pool: *Pool, options: Options) !void { const allocator = options.allocator; pool.* = .{ .allocator = allocator, .threads = if (builtin.single_threaded) .{} else &.{}, .ids = .{}, }; if (builtin.single_threaded) { return; } const thread_count = options.n_jobs orelse @max(1, std.Thread.getCpuCount() catch 1); if (options.track_ids) { try pool.ids.ensureTotalCapacity(allocator, 1 + thread_count); pool.ids.putAssumeCapacityNoClobber(std.Thread.getCurrentId(), {}); } // kill and join any threads we spawned and free memory on error. pool.threads = try allocator.alloc(std.Thread, thread_count); var spawned: usize = 0; errdefer pool.join(spawned); for (pool.threads) |*thread| { thread.* = try std.Thread.spawn(.{ .stack_size = options.stack_size, .allocator = allocator, }, worker, .{pool}); spawned += 1; } }