VR-Link API Documentation for DIS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Classes | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes
DtParallelExecutionContainer< Texec > Class Template Reference

DtParallelExecutionContainer is implementation of DtExecutionContainer which executes methods on all contained objects in parallel on multiple threads. More...

+ Inheritance diagram for DtParallelExecutionContainer< Texec >:
+ Collaboration diagram for DtParallelExecutionContainer< Texec >:

Classes

class  ExecutableItem
 This class is used by TBB to manage the work units to perform. More...

Public Types

typedef std::vector< Texec * > PecContainerType
typedef PecContainerType::iterator PecIteratorType

Public Member Functions

 DtParallelExecutionContainer (bool parallel=true)
 Default to parallel execution.
virtual ~DtParallelExecutionContainer ()
virtual void add (Texec *item)
 Add a reference to the list.
virtual void remove (Texec *item)
 Remove a reference from the list.
virtual void clear ()
 Clear the list.
virtual bool empty ()
 Returns true if the container is empty.
virtual unsigned int count ()
 Returns the number of items in the container.
virtual void deleteAndClear ()
 Delete all referenced objects and then clear the list.
virtual PecIteratorType begin ()
 Iterators over the collection.
virtual PecIteratorType end ()
virtual void executeMethod (void(Texec::*theMethodPtr)())
 worker methods
virtual void setParallel (bool parallel)
 The 'parallel' property determines if the methods are executed in parallel or serial.
virtual bool isParallel () const

Protected Member Functions

virtual void executeMethodParallel (void(Texec::*theMethodPtr)())
 Execute method on all contained objects in parallel using multiple threads.
virtual void executeMethodSerial (void(Texec::*theMethodPtr)())
 For test and debug, a convenience to execute methods serially.
virtual void beginParallel ()
 executed before entering a parallel section
virtual void endParallel ()
 executed after leaving a parallel section

Protected Attributes

PecContainerType myExecVec
 Contains pointers to published entities.

Private Attributes

bool useParallel
 true if using parallel execution, false for serial

Detailed Description

template<class Texec>
class DtParallelExecutionContainer< Texec >

DtParallelExecutionContainer is implementation of DtExecutionContainer which executes methods on all contained objects in parallel on multiple threads.

Note that objects of this class are not themselves threadsafe, so you can't add items to, or remove items from the collection in different threads.

Member Typedef Documentation

template<class Texec>
typedef std::vector<Texec *> DtParallelExecutionContainer< Texec >::PecContainerType
template<class Texec>
typedef PecContainerType::iterator DtParallelExecutionContainer< Texec >::PecIteratorType

Constructor & Destructor Documentation

template<class Texec>
DtParallelExecutionContainer< Texec >::DtParallelExecutionContainer ( bool  parallel = true)
inline

Default to parallel execution.

template<class Texec>
virtual DtParallelExecutionContainer< Texec >::~DtParallelExecutionContainer ( )
inlinevirtual

Member Function Documentation

template<class Texec>
virtual void DtParallelExecutionContainer< Texec >::add ( Texec *  item)
inlinevirtual

Add a reference to the list.

Implements DtExecutionContainer< Texec >.

template<class Texec>
virtual PecIteratorType DtParallelExecutionContainer< Texec >::begin ( )
inlinevirtual

Iterators over the collection.

Referenced by DtParallelExecutionContainer< DtObjectPublisher >::remove().

template<class Texec>
virtual void DtParallelExecutionContainer< Texec >::beginParallel ( )
inlineprotectedvirtual

executed before entering a parallel section

template<class Texec>
virtual void DtParallelExecutionContainer< Texec >::clear ( )
inlinevirtual

Clear the list.

Implements DtExecutionContainer< Texec >.

template<class Texec>
virtual unsigned int DtParallelExecutionContainer< Texec >::count ( )
inlinevirtual

Returns the number of items in the container.

template<class Texec >
void DtParallelExecutionContainer< Texec >::deleteAndClear ( )
inlinevirtual

Delete all referenced objects and then clear the list.

Implements DtExecutionContainer< Texec >.

template<class Texec>
virtual bool DtParallelExecutionContainer< Texec >::empty ( )
inlinevirtual

Returns true if the container is empty.

template<class Texec>
virtual PecIteratorType DtParallelExecutionContainer< Texec >::end ( )
inlinevirtual
template<class Texec>
virtual void DtParallelExecutionContainer< Texec >::endParallel ( )
inlineprotectedvirtual

executed after leaving a parallel section

template<class Texec>
void DtParallelExecutionContainer< Texec >::executeMethod ( void(Texec::*)()  theMethodPtr)
inlinevirtual

worker methods

Execute method on all contained objects.

Implements DtExecutionContainer< Texec >.

Referenced by DtPublisherContainer< DtObjectPublisher >::forceUpdate(), and DtPublisherContainer< DtObjectPublisher >::tick().

template<class Texec>
void DtParallelExecutionContainer< Texec >::executeMethodParallel ( void(Texec::*)()  theMethodPtr)
inlineprotectedvirtual

Execute method on all contained objects in parallel using multiple threads.

template<class Texec>
void DtParallelExecutionContainer< Texec >::executeMethodSerial ( void(Texec::*)()  theMethodPtr)
inlineprotectedvirtual

For test and debug, a convenience to execute methods serially.

template<class Texec>
virtual bool DtParallelExecutionContainer< Texec >::isParallel ( ) const
inlinevirtual
template<class Texec>
virtual void DtParallelExecutionContainer< Texec >::remove ( Texec *  item)
inlinevirtual

Remove a reference from the list.

Implements DtExecutionContainer< Texec >.

template<class Texec>
virtual void DtParallelExecutionContainer< Texec >::setParallel ( bool  parallel)
inlinevirtual

The 'parallel' property determines if the methods are executed in parallel or serial.

Member Data Documentation

template<class Texec>
PecContainerType DtParallelExecutionContainer< Texec >::myExecVec
protected
template<class Texec>
bool DtParallelExecutionContainer< Texec >::useParallel
private

The documentation for this class was generated from the following file:

Document ID: Generated on Mon Jun 22 21:18:40 EDT 2020 from SVN revision 213785
Copyright © 2005-2018 MAK Technologies. All Rights Reserved (www.mak.com)