|-
| width='120' | '''Signatures'''
|{{Func|async:fork-join|$functions as function(*)*|item()*}}<br/ >{{Func|async:fork-join|$functions as function(*)*, $options as map(xs:string, xs:string)|item()*}}<br/ >
|-
|'''Summary'''
|This function executes the supplied (non-updating) functions in parallel. The following {{Code|$options}} are available:* <code>threads</code>: maximum number of parallel threads (default: available number of cores)* <code>thread-size</code>: number of functions to be evaluated by each thread (default: <code>1</code>)
|-
| '''Examples'''
)
</pre>
* In the following query, up to two four URLs will be requested in parallel:
<pre class='brush:xquery'>
let $funcs :=
let $url := 'http://url.com/path' || $segment
return function() { http:send-request((), $url) }
return async:fork-join($funcs, map { 'threads': 2 })
</pre>
|-
|'''Errors'''
|{{Error|unexpected|#Errors}} an unexpected error occurred while running a query or function in a separate thread.<br/>{{Error|out-of-range|#Errors}} a supplied option is out of range.<br/>
|}