#include <PsMultiThreadedController.h>
Inheritance diagram for PsMultiThreadedController:


Public Methods | |
| PsMultiThreadedController (PsObjectDescriptor &initialObjects, const PsDate &initialDate, unsigned int numberOfThreads) | |
| constructor | |
| PsMultiThreadedController (PsObjectDescriptor &initialObjects, const PsDate &initialDate) | |
| constructor | |
| virtual | ~PsMultiThreadedController () |
| destructor | |
| virtual PsnScheduler * | createScheduler () |
| redefine to create a multihtreaded scheduler | |
| virtual void | run () |
| redefine run to install a local memory manager | |
Protected Attributes | |
| unsigned int | _numberOfThreads |
| the number of threads created | |
Definition at line 33 of file PsMultiThreadedController.h.
|
||||||||||||||||
|
constructor
Definition at line 29 of file PsMultiThreadedController.cxx. References PsNameServer::getCanonicalRepresentation(), PsName::getNameServer(), PsDate, and PsName::setNameServer().
00031 : 00032 PsController(initialObjects, 00033 initialDate), 00034 _numberOfThreads (numberOfThreads) 00035 { 00036 //convert the actual name Server to non ref counting name server to avoid contention on the name server locks during ref counting operations 00037 PsNoRefCountingNameServer<STL_ALLOC> * nameServer = new PsNoRefCountingNameServer<STL_ALLOC> (PsName::getNameServer()->getCanonicalRepresentation () ) ; 00038 PsName::setNameServer (nameServer ) ; 00039 } |
|
||||||||||||
|
constructor
Definition at line 41 of file PsMultiThreadedController.cxx. References _numberOfThreads, PsConfigurationParameterDescriptor::getAssociatedString(), PsNameServer::getCanonicalRepresentation(), PsName::getNameServer(), PsSimulatedObject::getObjectDescriptor(), PsObjectDescriptor::getSchedulingParameters(), PsMultipleConfigurationParameter::getSubDescriptorByName(), PsDate, and PsName::setNameServer().
00042 : 00043 PsController(initialObjects, 00044 initialDate), 00045 _numberOfThreads (2) 00046 { 00047 //convert the actual name Server to non ref counting name server to avoid contention on the name server locks during ref counting operations 00048 PsNoRefCountingNameServer<STL_ALLOC> * nameServer = new PsNoRefCountingNameServer<STL_ALLOC> (PsName::getNameServer()->getCanonicalRepresentation () ) ; 00049 PsName::setNameServer (nameServer ) ; 00050 00051 if (getObjectDescriptor().getSchedulingParameters() != NULL ) 00052 { 00053 const PsConfigurationParameterDescriptor * param = getObjectDescriptor().getSchedulingParameters()->getSubDescriptorByName("NumberOfThreads") ; 00054 if (param != NULL ) 00055 { 00056 _numberOfThreads = atoi (param->getAssociatedString().c_str() ) ; 00057 } 00058 } 00059 00060 } |
|
|
destructor
Definition at line 62 of file PsMultiThreadedController.cxx.
00062 {
00063
00064 }
|
|
|
redefine to create a multihtreaded scheduler
Reimplemented from PsController. Definition at line 66 of file PsMultiThreadedController.cxx. References PsController::_nbStepsByCycle, and _numberOfThreads.
00067 {
00068 return new PsnMultiThreadedScheduler( _nbStepsByCycle , _numberOfThreads, true ) ;
00069 }
|
|
|
redefine run to install a local memory manager
Reimplemented from PsController. Definition at line 71 of file PsMultiThreadedController.cxx. References PsnMemoryManager::allocateSizeRemembered(), HeapStackTop::getSystemMemoryManager(), PsController::init(), PsnMemoryManager::init(), and PsController::run().
00072 {
00073 PsnMemoryManager * currentMemoryManager = HeapStackTop::getSystemMemoryManager() ;
00074
00075 assert ( currentMemoryManager != 0 ) ;
00076
00077 size_t initialAllocatatedMemory = 1024 * 1024 ;
00078
00079 void * startMemory = currentMemoryManager->allocateSizeRemembered ( initialAllocatatedMemory ) ;
00080
00081 PsnDescriptorMemoryManager * descriptorMemoryManager = new PsnDescriptorMemoryManager ( *currentMemoryManager ) ;
00082
00083 descriptorMemoryManager->init() ;
00084
00085 PsnThreadMemoryManager * memoryManagerForThisThread ;
00086
00087 memoryManagerForThisThread = new PsnThreadMemoryManager ( startMemory,
00088 initialAllocatatedMemory,
00089 *currentMemoryManager,
00090 *descriptorMemoryManager ) ;
00091 memoryManagerForThisThread -> init() ;
00092
00093 HeapStackTop allocationContextForThisThread ( memoryManagerForThisThread ) ;
00094
00095 PsController::run() ;
00096 }
|
|
|
the number of threads created
Definition at line 57 of file PsMultiThreadedController.h. Referenced by createScheduler(), and PsMultiThreadedController(). |
| Documentation generated on Mon Nov 25 15:26:13 2002 |
Generated with doxygen 1.2.12 by Dimitri van Heesch , 1997-2001 |