New (Daemon constructor): Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
m (→Syntax terms) |
||
Line 19: | Line 19: | ||
<li>The GTBL server table is set to the same size on the daemon as it is on the master thread. | <li>The GTBL server table is set to the same size on the daemon as it is on the master thread. | ||
<li>The <var>GTBLHASH</var> and <var>GTBLPCT</var> parameters on the daemon thread are set to the same values as on the master thread. | <li>The <var>GTBLHASH</var> and <var>GTBLPCT</var> parameters on the daemon thread are set to the same values as on the master thread. | ||
<li>Only unstructured globals (globals created by <var>[[$Setg]]</var> or <var>[[$Getg]]</var>) and | <li>Only unstructured globals (globals created by <var>[[$Setg]]</var> or <var>[[$Getg]]</var>) and permanent global Images in the master thread GTBL are copied to the daemon (global foundsets/lists, global Screens, and any temporary global items are <b><i>not</i></b> copied). | ||
</ul></td></tr> | </ul></td></tr> | ||
Revision as of 20:11, 8 July 2012
Create a new Daemon (Daemon class)
Syntax
%daemon = [%(Daemon):]New[( [CopyGlobals= boolean], [Transactional= boolean], - [OpenAll= boolean])] Throws MaxDaemExceeded, NoFreeDaemons, DaemonLost
Syntax terms
%daemon | A Daemon object. |
---|---|
[%(Daemon):] | The optional class name in parentheses denotes a Constructor. See "Usage notes", below, for more information about invoking a Daemon Constructor. |
CopyGlobals | An optional, name required parameter whose value is a Boolean enumeration.
The default is
|
Transactional | An optional, name required, parameter whose value is a Boolean enumeration.
|
OpenAll | An optional, name required, parameter whose value is a Boolean enumeration. If set to True , the daemon thread opens all files and groups that are open on the master thread. The files and groups are opened with the same privileges as on the master thread. This parameter is new as of Sirius Mods Version 8.1. |
Exceptions
This subroutine can throw the following exception:
- NoFreeDaemons
- If there are no daemon threads available to service the object, a NoFreeDaemons exception is thrown. This exception will only be thrown in Sirius Mods Version 7.2 and later.
Usage notes
- As described in "Using New or other Constructors", New can be invoked with no object, with an explicit class name, or with an object variable in the class, even if that object is Null:
%daemon = new %daemon = %(Daemon):new %daemon = %daemon:new
- New not only creates a Daemon object in the user tables, but it also finds a free sdaemon thread and dedicates it to the issuing user. If no sdaemon threads are available, the request is cancelled.
- The number of daemons allowed per master thread is limited by the MAXDAEM system parameter, whose default value is 1.
- If you specify
CopyGlobals=True
, and if there is insufficient server space (say, if daemons start out with very big tables, except for GTBL, and the master has a very big GTBL), the daemon fails during initialization. - Even files opened as part of the subsystem being run by the master thread are opened on a daemon thread when
OpenAll=True
is specified. - Opening a lot of files via
OpenAll=True
is more efficient than opening the files individually with the Open method. - If LFTBL on the daemon thread is not enough to allow opening all the groups to be opened by
OpenAll=True
, the daemon thread issues an error message and logs off, and the New method fails.