const std = @import("std");
const thread = std.Thread;
// Sigmoid函数
fn sigmoid(x: f64) f64 {
return 1 / (1 + std.math.pow(f64, std.math.e, -x));
}
fn work(i: usize) void {
std.debug.print("result = {d}, thread id = {any}\n", .{ i * i, thread.getCurrentId() });
}
fn thread_pool() !void {
// Thread Pool
// 创建内存分配器
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
defer _ = gpa.deinit();
const allocator = gpa.allocator();
// 创建线程池
// 这里默认没有指定线程池中线程的数量,它会自动获取CPU核数量,并且与1进行比较,选取较大的数作为线程数
var pool: thread.Pool = undefined;
try pool.init(.{ .allocator = allocator });
defer pool.deinit();
// 获取CPU核数量
// const cpus = try thread.getCpuCount();
// 往线程池中推送任务
for (0..128) |i| {
try pool.spawn(work, .{i});
}
}
pub fn main() !void {
try thread_pool();
}
【ZIG】使用线程池
最新推荐文章于 2024-06-28 10:26:49 发布