Concurrency & Async Tasks ​
httpx.zig provides explicit primitives for concurrent execution and background task management: parallel client helpers plus a bounded worker pool and queue.
Parallel Requests ​
Execute multiple HTTP requests using Client.getAll / Client.requestAll (or the httpx.getAll / httpx.requestAll zero-config helpers). They run the 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);
}For unreachable or slow hosts, set per-request timeoutMs so batch jobs fail fast instead of waiting on default socket budgets:
zig
var r = try client.get("https://slow.example.com", .{ .timeoutMs = 2_000 });
defer r.deinit();Worker Pool ​
httpx.WorkerPool (src/concurrency/workerPool.zig) is a fixed-thread, bounded-queue pool with graceful drain:
zig
var pool = httpx.WorkerPool.init(allocator, .{
.workers = 4,
.queueCapacity = 1024,
.autoStart = true,
});
defer pool.deinit();Defaults ​
workers = 0means "choose a sensible default from the host CPU count" (clamped 1..16).queueCapacity = 1024bounds pending tasks before submission fails.autoStart = truestarts worker threads on the first submitted task.
Queue ​
httpx.Queue (src/concurrency/queue.zig) is the thread-safe bounded queue used internally by the pool.
