ptolemy.domains.de.kernel
Class DEThreadActor
java.lang.Object
ptolemy.kernel.util.NamedObj
ptolemy.kernel.InstantiableNamedObj
ptolemy.kernel.Entity
ptolemy.kernel.ComponentEntity
ptolemy.actor.AtomicActor
ptolemy.actor.TypedAtomicActor
ptolemy.domains.de.kernel.DEActor
ptolemy.domains.de.kernel.DEThreadActor
- All Implemented Interfaces:
- java.io.Serializable, java.lang.Cloneable, java.lang.Runnable, Actor, Executable, FiringsRecordable, Initializable, SequenceActor, TimedActor, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable
public abstract class DEThreadActor
- extends DEActor
- implements java.lang.Runnable
A base class for threaded DE domain actors.
NOTE: This actor is very preliminary. It is not developed and maintained
for a long time. We do not recommend using it. To try multiple threads under
DE semantics, use DDE domain, which is another experimental domain.
This actor, upon its initialization, will start another thread.
The thread communicate with the DEDirector thread by placing
events into the DEEventQueue asynchronously.
Subclass of this class should implement the run() method.
The subclass is executed in an event driven way. More precisely,
the implementation of the run() method should call
waitForNewInputs() after processing all current events. The
calls are blocked until the next time fire() is called.
Recall that the Director (after putting events into the
receiver of the input ports) will call fire() on the actor.
NOTE: The synchronization mechanism is implemented in DECQEventQueue
to ensure the correct multi-threading behaviour.
This implementation does not change the semantics of DEReceiver,
but still supports an asynchronous message passing type of
concurrency.
- Since:
- Ptolemy II 0.2
- Version:
- $Id: DEThreadActor.java 57040 2010-01-27 20:52:32Z cxh $
- Author:
- Lukito Muliadi
- See Also:
DEActor
,
Serialized Form
- Accepted Rating:
- Proposed Rating:
Fields inherited from class ptolemy.kernel.util.NamedObj |
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS |
Method Summary |
private void |
_emptyPorts()
|
void |
fire()
Awake the thread running this actor. |
void |
initialize()
Create a thread for the actor and start the thread. |
abstract void |
run()
Implement this method to define the job of the threaded actor. |
void |
waitForNewInputs()
Clear input ports then wait until
input events arrive. |
void |
waitForNewInputs(IOPort[] ports)
Wait for new inputs on the specified array of ports. |
Methods inherited from class ptolemy.actor.AtomicActor |
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, clone, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, postfire, prefire, preinitialize, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, setContainer, stop, stopFire, terminate, wrapup |
Methods inherited from class ptolemy.kernel.ComponentEntity |
_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName |
Methods inherited from class ptolemy.kernel.Entity |
_description, _exportMoMLContents, _removePort, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName |
Methods inherited from class ptolemy.kernel.util.NamedObj |
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _recordDecoratedAttributes, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, attributeChanged, attributeList, attributeList, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, propagateValue, propagateValues, removeChangeListener, removeDebugListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspace |
Methods inherited from class java.lang.Object |
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
_isWaiting
private boolean _isWaiting
_monitor
private static java.lang.Object _monitor
_thread
private PtolemyThread _thread
DEThreadActor
public DEThreadActor(TypedCompositeActor container,
java.lang.String name)
throws NameDuplicationException,
IllegalActionException
- Constructor.
- Parameters:
container
- The container.name
- The name of this actor.
- Throws:
IllegalActionException
- If the entity cannot be contained
by the proposed container.
NameDuplicationException
- If the container already has an
actor with this name.
fire
public void fire()
- Awake the thread running this actor.
- Specified by:
fire
in interface Executable
- Overrides:
fire
in class AtomicActor
initialize
public void initialize()
- Create a thread for the actor and start the thread.
- Specified by:
initialize
in interface Initializable
- Overrides:
initialize
in class AtomicActor
run
public abstract void run()
- Implement this method to define the job of the threaded actor.
- Specified by:
run
in interface java.lang.Runnable
waitForNewInputs
public void waitForNewInputs()
- Clear input ports then wait until
input events arrive.
waitForNewInputs
public void waitForNewInputs(IOPort[] ports)
throws IllegalActionException
- Wait for new inputs on the specified array of ports.
- Parameters:
ports
- The array of ports whose inputs we're interested in.
- Throws:
IllegalActionException
- If the specified array of ports
is not all input ports.
_emptyPorts
private void _emptyPorts()