Spawn {R}←{X}f&Y

& is a monadic operator with an ambivalent derived function. & spawns a new thread in which f is applied to its argument Y (monadic case) or between its arguments X and Y (dyadic case). The shy result of this application is the number of the newly created thread.

When function f terminates, its result (if any), the thread result, is returned. If the thread number is the subject of an active ⎕TSYNC, the thread result appears as the result of ⎕TSYNC. If no ⎕TSYNC is in effect, the thread result is displayed in the session in the normal fashion.

Note that & can be used in conjunction with the each operator ¨ to launch many threads in parallel.

Examples

      ÷&4         ⍝ Reciprocal in background
0.25

      ÷&4       ⍝ Show thread number
1
0.25

      FOO&88      ⍝ Spawn monadic function.

      2 FOO&3     ⍝ dyadic

      {NIL}&0     ⍝ niladic

      &'NIL'     ⍝ ..

      X.GOO&99    ⍝ thread in remote space.

      &'⎕dl 2'   ⍝ Execute async expression.

      'NS'&'FOO' ⍝ .. remote .. .. .. 

      PRT⎕nl 9 ⍝ PRT spaces in parallel.