Mitsuba Renderer  0.5.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mitsuba::Worker Class Referenceabstract

Base class of all worker implementations. More...

#include <mitsuba/core/sched.h>

+ Inheritance diagram for mitsuba::Worker:

Public Member Functions

size_t getCoreCount () const
 Return the number of cores exposed by this worker. More...
 
bool isRemoteWorker () const
 Is this a remote worker? More...
 
virtual const ClassgetClass () const
 Retrieve this object's class. More...
 
- Public Member Functions inherited from mitsuba::Thread
 Thread (const std::string &name)
 Create a new thread object. More...
 
bool setPriority (EThreadPriority priority)
 Set the thread priority. More...
 
EThreadPriority getPriority () const
 Return the thread priority. More...
 
void setCoreAffinity (int core)
 Set the core affinity. More...
 
int getCoreAffinity () const
 Return the core affinity. More...
 
void setCritical (bool critical)
 Specify whether or not this thread is critical. More...
 
bool getCritical () const
 Return the value of the critical flag. More...
 
const std::string & getName () const
 Return the name of this thread. More...
 
void setName (const std::string &name)
 Set the name of this thread. More...
 
ThreadgetParent ()
 Return the parent thread. More...
 
const ThreadgetParent () const
 Return the parent thread (const version) More...
 
void setLogger (Logger *logger)
 Set the logger instance used to process log messages from this thread. More...
 
LoggergetLogger ()
 Return the thread's logger instance. More...
 
void setFileResolver (FileResolver *fresolver)
 Set the thread's file resolver. More...
 
FileResolvergetFileResolver ()
 Return the thread's file resolver. More...
 
bool isRunning () const
 Is this thread still running? More...
 
void start ()
 Start the thread. More...
 
void detach ()
 Detach the thread and release resources. More...
 
void join ()
 Wait until the thread finishes. More...
 
virtual std::string toString () const
 Return a string representation. More...
 
- Public Member Functions inherited from Object
 Object ()
 Construct a new object. More...
 
int getRefCount () const
 Return the current reference count. More...
 
void incRef () const
 Increase the reference count of the object by one. More...
 
void decRef (bool autoDeallocate=true) const
 Decrease the reference count of the object and possibly deallocate it. More...
 

Static Public Attributes

static Classm_theClass
 
- Static Public Attributes inherited from mitsuba::Thread
static Classm_theClass
 
- Static Public Attributes inherited from Object
static Classm_theClass
 Pointer to the object's class descriptor. More...
 

Protected Member Functions

virtual ~Worker ()
 Virtual destructor. More...
 
 Worker (const std::string &name)
 Protected constructor. More...
 
virtual void clear ()
 
virtual void start (Scheduler *scheduler, int workerIndex, int coreOffset)
 Used internally by the scheduler. More...
 
virtual void signalResourceExpiration (int id)=0
 Called to inform a worker that a resource is no longer in use. More...
 
virtual void signalProcessCancellation (int id)=0
 Called to inform a worker that a process has been cancelled. More...
 
virtual void signalProcessTermination (int id)=0
 Called to inform a worker that a process has successfully been completed and any associated resources can be freed. More...
 
Scheduler::EStatus acquireWork (bool local, bool onlyTry=false, bool keepLock=false)
 
void releaseSchedulerLock ()
 
void releaseWork (Scheduler::Item &item)
 Release a processed work unit. More...
 
void setProcessByID (Scheduler::Item &item, int id)
 Initialize the m_schedItem data structure when only the process ID is known. More...
 
void cancel (bool reduceInflight)
 
- Protected Member Functions inherited from mitsuba::Thread
virtual ~Thread ()
 Virtual destructor. More...
 
void exit ()
 
void yield ()
 Yield to another processor. More...
 
virtual void run ()=0
 The thread's run method. More...
 
- Protected Member Functions inherited from Object
virtual ~Object ()
 Virtual private deconstructor. (Will only be called by ref) More...
 

Protected Attributes

Schedulerm_scheduler
 
Scheduler::Item m_schedItem
 
size_t m_coreCount
 
bool m_isRemote
 

Friends

class Scheduler
 

Additional Inherited Members

- Public Types inherited from mitsuba::Thread
enum  EThreadPriority {
  EIdlePriority = 0, ELowestPriority, ELowPriority, ENormalPriority,
  EHighPriority, EHighestPriority, ERealtimePriority
}
 Possible priority values for Thread::setPriority() More...
 
- Static Public Member Functions inherited from mitsuba::Thread
static int getID ()
 Return the thread ID. More...
 
static ThreadgetThread ()
 Return the current thread. More...
 
static void sleep (unsigned int ms)
 Sleep for a certain amount of time. More...
 
static void staticInitialization ()
 Initialize the threading system. More...
 
static void staticShutdown ()
 Shut down the threading system. More...
 
static void initializeOpenMP (size_t threadCount)
 Initialize Mitsuba's threading system for simultaneous use of OpenMP. More...
 
static ThreadregisterUnmanagedThread (const std::string &name)
 Register an unmanaged thread with Mitsuba (i.e. one that doesn't derive from mitsuba::Thread) More...
 
static void registerCrashHandler (bool(*handler)(void))
 Register a thread crash handler. More...
 
- Static Public Member Functions inherited from Object
static void staticInitialization ()
 Initializes the built-in reference count debugger (if enabled) More...
 
static void staticShutdown ()
 Free the memory taken by staticInitialization() More...
 
- Static Protected Member Functions inherited from mitsuba::Thread
static void dispatch (Thread *thread)
 Thread dispatch function. More...
 

Detailed Description

Base class of all worker implementations.

Constructor & Destructor Documentation

virtual mitsuba::Worker::~Worker ( )
inlineprotectedvirtual

Virtual destructor.

mitsuba::Worker::Worker ( const std::string &  name)
protected

Protected constructor.

Member Function Documentation

Scheduler::EStatus mitsuba::Worker::acquireWork ( bool  local,
bool  onlyTry = false,
bool  keepLock = false 
)
inlineprotected
void mitsuba::Worker::cancel ( bool  reduceInflight)
inlineprotected

Cancel the currently scheduled parallel process and possibly reduce the number of in-flight work units Returns false if the process does not exist (anymore).

virtual void mitsuba::Worker::clear ( )
protectedvirtual

Reimplemented in mitsuba::RemoteWorker.

virtual const Class* mitsuba::Worker::getClass ( ) const
virtual

Retrieve this object's class.

Reimplemented from mitsuba::Thread.

Reimplemented in mitsuba::LocalWorker, and mitsuba::RemoteWorker.

size_t mitsuba::Worker::getCoreCount ( ) const
inline

Return the number of cores exposed by this worker.

bool mitsuba::Worker::isRemoteWorker ( ) const
inline

Is this a remote worker?

void mitsuba::Worker::releaseSchedulerLock ( )
inlineprotected
void mitsuba::Worker::releaseWork ( Scheduler::Item &  item)
inlineprotected

Release a processed work unit.

void mitsuba::Worker::setProcessByID ( Scheduler::Item &  item,
int  id 
)
inlineprotected

Initialize the m_schedItem data structure when only the process ID is known.

virtual void mitsuba::Worker::signalProcessCancellation ( int  id)
protectedpure virtual

Called to inform a worker that a process has been cancelled.

Guaranteed to be called while the Scheduler's main lock is held.

Implemented in mitsuba::LocalWorker, and mitsuba::RemoteWorker.

virtual void mitsuba::Worker::signalProcessTermination ( int  id)
protectedpure virtual

Called to inform a worker that a process has successfully been completed and any associated resources can be freed.

Implemented in mitsuba::LocalWorker, and mitsuba::RemoteWorker.

virtual void mitsuba::Worker::signalResourceExpiration ( int  id)
protectedpure virtual

Called to inform a worker that a resource is no longer in use.

The remote worker uses this to notify the machine on the other end that the memory used by this resource can now be released.

Implemented in mitsuba::LocalWorker, and mitsuba::RemoteWorker.

virtual void mitsuba::Worker::start ( Scheduler scheduler,
int  workerIndex,
int  coreOffset 
)
protectedvirtual

Used internally by the scheduler.

Reimplemented in mitsuba::RemoteWorker.

Friends And Related Function Documentation

friend class Scheduler
friend

Member Data Documentation

size_t mitsuba::Worker::m_coreCount
protected
bool mitsuba::Worker::m_isRemote
protected
Scheduler::Item mitsuba::Worker::m_schedItem
protected
Scheduler* mitsuba::Worker::m_scheduler
protected
Class* mitsuba::Worker::m_theClass
static

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