class ListGroupList
A ListGroupList is essentially a loop unrolling of a sequential FOR statement such that each loop of the for is allocated to a different Worker process thereby enabling the implementation of a parallel For loop.
It is assumed that it is not possible to write to the same (or part of a) data object in more than ONE of the Workers. In other words parallel access to a data object is not permitted for write operations where the operation does not have exclusive access to the data object. This is a requirement but is not checked by the system. There is no synchronisation between the Workers in the group unless synchronised is set true.
inputList
- A ChannelInputList with as many channels as the value of workers.
Each Worker process reads from just one element of the input.outputList
- A ChannelOutputList with as many channels as the value of workers.
Each Worker process writes to just one of the channelsgDetails
- A GroupDetails object defining any local class of each worker, default to nullfunction
- The name of the function identifying the operation to be undertaken
by the Worker processes. They all undertake the same operation.modifier
- Contains a possible modifier for the operation, with each Worker
accessing the element that corresponds to the index of the Worker.workers
- The number of Worker processes that will be created
when the Group is runoutData
- If true the worker processes will output each processed input object. If false the process will output
the workerClass once only, after it has processed all the input data objects. The output
only happens after the finalise method has been called. outData defaults to true.synchronised
- If true the worker processes will synchronise with each other before they output any data,
thereby providing a means whereby each worker process will output results once the process
reading from the final stage of the pipeline has read that datalogPhaseName
- an optional string property, which if specified indicates that the process should be logged
otherwise the process will not be logged. Each process in the group will be uniquely indexed.logPropertyName
- the name of a property in the input object that will uniquely identify an instance of the object.
LogPropertyName must be specified if logPhaseName is specifiedType | Name and description |
---|---|
String |
function |
GroupDetails |
gDetails |
ChannelInputList |
inputList |
String |
logPhaseName |
String |
logPropertyName |
List |
modifier |
boolean |
outData |
ChannelOutputList |
outputList |
boolean |
synchronised |
int |
workers |
Constructor and description |
---|
ListGroupList
() |
GPP - Groovy Parallel Patterns generated 06112016 by Jon Kerridge, Edinburgh Napier University - j.kerridge@napier.ac.uk