In fact, pmap not subject to the "processors + 2" limit. This is the result of how regular map and future macros work:
future uses a pool of cached streams, which has no size limit;
map creates a sequence with alternation, that is, one that always forces 32 elements at a time, even if only the heap at the beginning of the fragment is actually consumed by the caller.
The end result is that futures in pmap run in parallel in blocks 32.
Please note that this does not violate the contract specified in pmap docstring. On the other hand, the code can lead to the assumption that the limit "processors + 2" will be respected - as if map were written naively. In fact, pmap may well precede the transition to chunked seqs, although I'm not quite sure it has been a while.
source share