I like the idea of explicit argument, it's easier to update to new package version this way.

I'm not sure about default concurrency. It definitely should not be `runtime.NumCPU()` – parallelism is controlled by `runtime.GOMAXPROCS()`. But I think library should not make assumptions about number of already running goroutines. So how about something like:
```go
if n < 1 {
  n = 1
}
```