http://xqerl.org/modules/actor
This module is statically bound to the prefix "actor".
- Description
- Module for spawning processes mid-query and asynchronous message-passing between these processes. - (: Save the address of the current actor :) 
 let $replyTo := actor:self()
 (: Spawn 10,000 child actors and save their addresses in $children :)
 let $children := (
 for $a in 1 to 10000
 (: Build a 0-arity function to spawn :)
 let $fun :=
 function()
 {
 (: Build a nice message and send it to the actor addressed by $replyTo :)
 let $cmt := ``[From `{ $a }`: Hi, my name is `{ actor:self() }`.]``
 return
 actor:send($replyTo, $cmt)
 }
 return
 (: Spawn the actor :)
 actor:spawn($fun)
 )
 return
 (: Collect the responses sent to this actor by their 'from' address
 These will be in the order sent :)
 $children ! actor:receive(.)
 (: $children ! actor:receive() would return in a possibly different order
 as the messages would be taken in the order received and not by address :)
- Functions
actor:spawn
- Signature
- actor:spawn($fun as function() as item()*) as xs:base64Binary
- Description
- Spawns a child actor that begins executing the 0-arity function passed to it. Returns the address of the child actor.
actor:self
- Signature
- actor:self() as xs:base64Binary
- Description
- Returns the address of the actor executing the function.
actor:parent
- Signature
- actor:parent() as xs:base64Binary?
- Description
- Returns the address of the actor which spawned the current actor, or the empty-sequence if this is the root actor.
actor:send
- Signature
- actor:send($address as xs:base64Binary, $payload as item()*) as empty-sequence()
- Description
- Sends an asynchronous message containing $payloadto$address.
actor:receive
- Signature
- actor:receive() as item()*
 actor:receive($from as xs:base64Binary) as item()*
 actor:receive($from as xs:base64Binary, $timeout as xs:integer) as item()*
- Description
- Receives a message. When no parameters are given, receives the next message in the queue. When $fromis given, will block until a message from that actor is received (optionally with a timeout in milliseconds). Upon timeout, an error will be raised.