Like http_listen but bound to N worker threads, each with its own SO_REUSEPORT listener. The kernel load-balances accepts across the N threads; per-conn coroutines still feed the shared M:N scheduler, so handler work parallelises across all worker pthreads.
n is the total number of accept threads. The current OS thread runs the last loop, the other n - 1 are spawned via spawn_thread. Picks n = 1 collapses to the same behaviour as http_listen.
Returns err only if the very first bind fails. Subsequent threads that fail to bind die silently — the kernel decides how many fit.
glide
fn main() -> int {
http_listen_workers(8080, 4, root);
return 0;
}