Acquires work from the scheduler and executes it locally. More...
#include <mitsuba/core/sched.h>
Public Member Functions | |
LocalWorker (int coreID, const std::string &name, Thread::EThreadPriority priority=Thread::ENormalPriority) | |
Create a new local worker thread. More... | |
virtual const Class * | getClass () const |
Retrieve this object's class. More... | |
Public Member Functions inherited from mitsuba::Worker | |
size_t | getCoreCount () const |
Return the number of cores exposed by this worker. More... | |
bool | isRemoteWorker () const |
Is this a remote worker? 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::Worker | |
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 | ~LocalWorker () |
Virtual destructor. More... | |
virtual void | run () |
The thread's run method. More... | |
virtual void | signalResourceExpiration (int id) |
Called to inform a worker that a resource is no longer in use. More... | |
virtual void | signalProcessCancellation (int id) |
Called to inform a worker that a process has been cancelled. More... | |
virtual void | signalProcessTermination (int id) |
Called to inform a worker that a process has successfully been completed and any associated resources can be freed. More... | |
Protected Member Functions inherited from mitsuba::Worker | |
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... | |
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... | |
Protected Member Functions inherited from Object | |
virtual | ~Object () |
Virtual private deconstructor. (Will only be called by ref) More... | |
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... | |
Protected Attributes inherited from mitsuba::Worker | |
Scheduler * | m_scheduler |
Scheduler::Item | m_schedItem |
size_t | m_coreCount |
bool | m_isRemote |
Acquires work from the scheduler and executes it locally.
mitsuba::LocalWorker::LocalWorker | ( | int | coreID, |
const std::string & | name, | ||
Thread::EThreadPriority | priority = Thread::ENormalPriority |
||
) |
Create a new local worker thread.
coreID | When an CPU core ID (>=0) is specified here, the worker thread will attempt to register core affinity with the operating system. Passing -1 disables this. |
name | An identifying string for this thread |
priority | The desired thread priority (not supported on some operating systems) |
|
protectedvirtual |
Virtual destructor.
|
virtual |
Retrieve this object's class.
Reimplemented from mitsuba::Worker.
|
protectedvirtual |
The thread's run method.
Implements mitsuba::Thread.
|
protectedvirtual |
Called to inform a worker that a process has been cancelled.
Guaranteed to be called while the Scheduler's main lock is held.
Implements mitsuba::Worker.
|
protectedvirtual |
Called to inform a worker that a process has successfully been completed and any associated resources can be freed.
Implements mitsuba::Worker.
|
protectedvirtual |
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.
Implements mitsuba::Worker.
|
static |