Base class of all worker implementations. More...
#include <mitsuba/core/sched.h>
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 Class * | getClass () 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... | |
Thread * | getParent () |
Return the parent thread. More... | |
const Thread * | getParent () 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... | |
Logger * | getLogger () |
Return the thread's logger instance. More... | |
void | setFileResolver (FileResolver *fresolver) |
Set the thread's file resolver. More... | |
FileResolver * | getFileResolver () |
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 Class * | m_theClass |
Static Public Attributes inherited from mitsuba::Thread | |
static Class * | m_theClass |
Static Public Attributes inherited from Object | |
static Class * | m_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 | |
Scheduler * | m_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 Thread * | getThread () |
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 Thread * | registerUnmanagedThread (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... | |
Base class of all worker implementations.
|
inlineprotectedvirtual |
Virtual destructor.
|
protected |
Protected constructor.
|
inlineprotected |
|
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).
|
protectedvirtual |
Reimplemented in mitsuba::RemoteWorker.
|
virtual |
Retrieve this object's class.
Reimplemented from mitsuba::Thread.
Reimplemented in mitsuba::LocalWorker, and mitsuba::RemoteWorker.
|
inline |
Return the number of cores exposed by this worker.
|
inline |
Is this a remote worker?
|
inlineprotected |
|
inlineprotected |
Release a processed work unit.
|
inlineprotected |
Initialize the m_schedItem data structure when only the process ID is known.
|
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.
|
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.
|
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.
|
protectedvirtual |
Used internally by the scheduler.
Reimplemented in mitsuba::RemoteWorker.
|
friend |
|
protected |
|
protected |
|
protected |
|
protected |
|
static |