ReturnToMaster (Daemon subroutine): Difference between revisions
mNo edit summary |
m (→Syntax terms) |
||
Line 9: | Line 9: | ||
<table class="syntaxTable"> | <table class="syntaxTable"> | ||
<tr><th nowrap="true"><var>%(Daemon)</var></th> | <tr><th nowrap="true"><var>%(Daemon)</var></th> | ||
<td>The class name in parentheses denotes a shared method. <var>ReturnToMaster</var> can also be invoked via a <var>Daemon</var> object variable, which may be <var>Null</var>.</td></tr> | <td>The class name in parentheses denotes a [[Notation conventions for methods#Shared methods|shared]] method. <var>ReturnToMaster</var> can also be invoked via a <var>Daemon</var> object variable, which may be <var>Null</var>.</td></tr> | ||
</table> | </table> | ||
Revision as of 18:11, 25 June 2012
Return control to the master thread (Daemon class)
[Introduced in Sirius Mods 8.1]
This method returns control from a daemon thread to its master thread inside a User Language request.
Syntax
%(Daemon):ReturnToMaster
Syntax terms
%(Daemon) | The class name in parentheses denotes a shared method. ReturnToMaster can also be invoked via a Daemon object variable, which may be Null. |
---|
Usage notes
- If not issued on a daemon thread, ReturnToMaster results in a request cancellation.
- A daemon can return objects to the master thread before invoking ReturnToMaster with the ReturnObject and ReturnInfoObject methods.
- The master thread would return control with the Continue, ContinueAsynchronously, or ContinueIndependently method. These methods can be used to pass an object to the daemon thread.
- As with the Run methods, a daemon thread can retrieve the object passed to it by a Continue method with the GetInputObject method.
Examples
In the following silly example, a daemon thread adds numbers passed to it in an XmlDoc by the master thread and returns the result in another XmlDoc:
b %doc is object xmlDoc %i is float %nodes is object xmlNodelist %result is float repeat forever %doc = new %doc:addElement('result', %result) %(daemon):returnToMaster %(daemon):getInputObject(%doc) %nodes = %doc:selectNodes('/sum/number') if %nodes:count eq 0 then loop end; end if %result = 0 for %i from 1 to %nodes:count %result = %nodes(%i):value end for end repeat end