Skip to content

Concurrency API ​

The concurrency module provides a bounded worker pool and queue plus parallel client helpers.

Parallel Requests ​

Client.getAll / Client.requestAll (and the httpx.getAll / httpx.requestAll zero-config helpers) execute multiple requests and wait for all to complete:

zig
const urls = [_][]const u8{
    "https://httpbun.com/get",
    "https://httpbun.com/headers",
};
var results = try client.getAll(urls);
defer {
    for (results) |*r| r.deinit();
    allocator.free(results);
}

WorkerPool ​

A fixed-thread, bounded-queue pool with graceful drain (src/concurrency/workerPool.zig).

zig
var pool = httpx.WorkerPool.init(allocator, .{
    .workers = 4,
    .queueCapacity = 1024,
    .autoStart = true,
});
defer pool.deinit();

Configuration (WorkerPoolConfig) ​

zig
pub const Config = struct {
    workers: u16 = 0, // 0 = auto (CPU count clamped 1..16)
    queueCapacity: u32 = 1024,
    autoStart: bool = true,
};

Queue ​

httpx.Queue (src/concurrency/queue.zig) is a thread-safe bounded queue used internally by the pool.

Released under the MIT License.