Cross-platform thread implementation. More...
#include <mitsuba/mitsuba.h>
Inheritance diagram for mitsuba::Thread:Public Types | |
| enum | EThreadPriority { EIdlePriority = 0, ELowestPriority, ELowPriority, ENormalPriority, EHighPriority, EHighestPriority, ERealtimePriority } |
| Possible priority values for Thread::setPriority() More... | |
Public Member Functions | |
| 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... | |
| virtual const Class * | getClass () const |
| Retrieve this object's class. 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 Member Functions | |
| 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 Public Attributes | |
| 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 | ~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... | |
Static Protected Member Functions | |
| static void | dispatch (Thread *thread) |
| Thread dispatch function. More... | |
Cross-platform thread implementation.
Possible priority values for Thread::setPriority()
| Enumerator | |
|---|---|
| EIdlePriority | |
| ELowestPriority | |
| ELowPriority | |
| ENormalPriority | |
| EHighPriority | |
| EHighestPriority | |
| ERealtimePriority | |
| mitsuba::Thread::Thread | ( | const std::string & | name | ) |
Create a new thread object.
| name | An identifying name of this thread (will be shown in debug messages) |
|
protectedvirtual |
Virtual destructor.
| void mitsuba::Thread::detach | ( | ) |
|
protected |
Exit the thread, should be called from inside the thread
|
virtual |
Retrieve this object's class.
Reimplemented from Object.
Reimplemented in mitsuba::LocalWorker, mitsuba::Worker, mitsuba::StreamBackend, mitsuba::RenderJob, mitsuba::RemoteWorkerReader, and mitsuba::RemoteWorker.
| int mitsuba::Thread::getCoreAffinity | ( | ) | const |
Return the core affinity.
| bool mitsuba::Thread::getCritical | ( | ) | const |
Return the value of the critical flag.
| FileResolver* mitsuba::Thread::getFileResolver | ( | ) |
Return the thread's file resolver.
|
static |
Return the thread ID.
| Logger* mitsuba::Thread::getLogger | ( | ) |
Return the thread's logger instance.
| const std::string& mitsuba::Thread::getName | ( | ) | const |
Return the name of this thread.
| Thread* mitsuba::Thread::getParent | ( | ) |
Return the parent thread.
| const Thread* mitsuba::Thread::getParent | ( | ) | const |
Return the parent thread (const version)
| EThreadPriority mitsuba::Thread::getPriority | ( | ) | const |
Return the thread priority.
|
static |
Return the current thread.
|
static |
Initialize Mitsuba's threading system for simultaneous use of OpenMP.
| bool mitsuba::Thread::isRunning | ( | ) | const |
Is this thread still running?
| void mitsuba::Thread::join | ( | ) |
Wait until the thread finishes.
|
static |
Register a thread crash handler.
A crash handler is called whenever a thread fails with an uncaught exception. This can be used to implement more useful error messages in certain circumstances
|
static |
Register an unmanaged thread with Mitsuba (i.e. one that doesn't derive from mitsuba::Thread)
Should be called from the thread in question. The function returns a Mitsuba handle to the thread
|
protectedpure virtual |
The thread's run method.
Implemented in mitsuba::GenericKDTree< AABBType, TreeConstructionHeuristic, Derived >::TreeBuilder, mitsuba::LocalWorker, mitsuba::StreamBackend, mitsuba::RenderJob, mitsuba::RemoteWorkerReader, and mitsuba::RemoteWorker.
| void mitsuba::Thread::setCoreAffinity | ( | int | core | ) |
Set the core affinity.
This function provides a hint to the operating system scheduler that the thread should preferably run on the specified processor core. By default, the parameter is set to -1, which means that there is no affinity.
| void mitsuba::Thread::setCritical | ( | bool | critical | ) |
Specify whether or not this thread is critical.
When an thread marked critical crashes from an uncaught exception, the whole process is brought down. The default is false.
| void mitsuba::Thread::setFileResolver | ( | FileResolver * | fresolver | ) |
Set the thread's file resolver.
| void mitsuba::Thread::setLogger | ( | Logger * | logger | ) |
Set the logger instance used to process log messages from this thread.
| void mitsuba::Thread::setName | ( | const std::string & | name | ) |
Set the name of this thread.
| bool mitsuba::Thread::setPriority | ( | EThreadPriority | priority | ) |
Set the thread priority.
This does not always work – for instance, Linux requires root privileges for this operation.
true upon success.
|
static |
Sleep for a certain amount of time.
| void mitsuba::Thread::start | ( | ) |
Start the thread.
|
static |
Initialize the threading system.
|
static |
Shut down the threading system.
|
virtual |
Return a string representation.
Reimplemented from Object.
|
protected |
Yield to another processor.
|
static |