Something went wrong. Try again.
fork of gitlab.com/devnw/zig/thread-pool for zig 0.17
Something went wrong. Try again.
4.2 kB · 85 lines
Zig
at main
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586// SPDX-License-Identifier: Apache-2.0// Copyright (c) 2024-2026 CodePros
//! `thread-pool` provides a bounded, reusable thread-pool for devnw/zig codebases.//! The public surface intentionally stays small while the implementation offers//! multiple scheduler variants behind the same API.
const std = @import("std");
/// Re-export the `build_options` module so downstream test harnesses can/// inspect compile-time-pinned flags (`-Dtimestamp-mode`,/// `-Dscheduler-variant`, `-Dsingle-pool`) and adapt their configs/// accordingly. See `tests/common.zig::default_timestamp_mode`.////// `build_options.with_otel` still exists as a const `false` for/// backwards source-compat; see `src/observability.zig` for the/// 2026-04-30 cycle-break rationale.pub const build_options = @import("build_options");
/// Observability seam. As of 2026-04-30 this is a permanent comptime/// no-op stub — `observability.enabled` is hardcoded `false` and every/// helper compiles away. Callers that need real telemetry should wrap/// `ThreadPool.submit` directly at their layer (where they already have/// otel + caller context). See `src/observability.zig` for the/// rationale (otel ↔ thread-pool dep cycle).pub const observability = @import("observability");
/// Placeholder for backwards source-compat with callers that referenced/// `thread_pool.observability_init.Otel`. The bootstrap helper module/// was removed when the otel dep was dropped; this empty struct keeps/// `@hasDecl(thread_pool, "observability_init")` callers compiling.pub const observability_init = struct {};
pub const sync = @import("sync.zig");pub const clock = @import("clock.zig");pub const types = @import("types.zig");pub const ThreadPool = @import("pool.zig").ThreadPool;pub const TaskContext = @import("pool.zig").TaskContext;pub const TaskFn = @import("pool.zig").TaskFn;pub const BatchTask = @import("pool.zig").BatchTask;
/// Library version, derived at compile time from build.zig.zon (AP2-01)./// A release bump requires only one edit in build.zig.zon.pub const version: []const u8 = @import("build_options").version;
pub const Config = types.Config;/// Explicit error set of `Config.validate` (QR-003, #41).pub const ConfigError = types.ConfigError;/// Explicit error set of `ThreadPool.submit` / `trySubmit` (QR-004, #43).pub const SubmitError = @import("pool.zig").SubmitError;/// Explicit error set of `ThreadPool.submitBatch` (QR-004, #43).pub const SubmitBatchError = @import("pool.zig").SubmitBatchError;/// Explicit error set of `ThreadPool.wait` (QR-004, #43).pub const WaitError = @import("pool.zig").WaitError;/// Explicit error set of `ThreadPool.shutdown` (QR-004, #43).pub const ShutdownError = @import("pool.zig").ShutdownError;/// Explicit error set of `ThreadPool.registerSubmitter` (QR-004, #43).pub const RegisterSubmitterError = @import("pool.zig").RegisterSubmitterError;pub const SchedulerVariant = types.SchedulerVariant;pub const QueueKind = types.QueueKind;pub const TaskLane = types.TaskLane;pub const BackpressurePolicy = types.BackpressurePolicy;pub const SubmitOptions = types.SubmitOptions;pub const ShutdownMode = types.ShutdownMode;pub const TaskHandle = types.TaskHandle;pub const WaitGroup = types.WaitGroup;pub const CancellationToken = types.CancellationToken;pub const LatencySummary = types.LatencySummary;pub const WorkerStats = types.WorkerStats;pub const ProcessMemoryStats = types.ProcessMemoryStats;pub const Stats = types.Stats;pub const WorkDeque = @import("queue/work_deque.zig").WorkDeque;pub const BoundedRing = @import("queue/bounded_ring.zig").BoundedRing;pub const RingQueue = @import("queue/ring_queue.zig").RingQueue;pub const DescCache = @import("pool/desc_cache.zig").DescCache;
test { std.testing.refAllDecls(@This()); // Files not re-exported above must be referenced explicitly or their // in-file tests are never collected (refAllDecls only reaches files // whose top-level decls appear in this module's public surface). _ = @import("stats/latency.zig"); _ = @import("stats/process_memory.zig"); _ = @import("memory/scratch.zig");}