Allocation of objects and processes
\label{des/ext/alloc}
\dlpindex{allocation}
In the examples given, no attention has been paid to the issue of
allocating (instances of) objects and the actual distribution of computation
over the available resources.
When a new instance of an object is created,
it can be allocated
to a particular processor node by a statement of the form
\dlpindex{\newobjectatexpr}
where N is a so-called node expression denoting
a particular processor node and
obj is either the name of an object or
a constructor, that is an object name with arguments.
In addition it is possible to split off a process
to evaluate a goal on a particular node by the statement
where G is a goal and N is a node number.
The meaning of a goal
is given by the clause
\dlpindex{\goalatexpr}
G@N :- O = new(self@N), Q = O!G, Q?.
Such a goal may be used only for passive objects.
Node expressions
\dlpindex{node expressions}
refer to a processor of the parallel machine on which the system
runs.
The parallel machine for which our system is intended
is assumed to have a limited number of processor
nodes that are connected with each other by
a communication network.
The programmer can refer to each of n processors by its number, $0,...,n-1I0:I1:...:I_nI1,...,I_n, giving the path $1,2,1N1 # N2N1 # N2N1 # N2 + 1