|
Graphite Version 3
An experimental 3D geometry processing program
|
Platform-independent base class for running concurrent threads. More...
#include <geogram/basic/process.h>
Public Member Functions | |
| virtual void | run_threads (ThreadGroup &threads) |
| Runs a group of Threads. | |
| virtual index_t | maximum_concurrent_threads ()=0 |
| Gets the maximum number of possible concurrent threads. | |
Public Member Functions inherited from GEO::Counted | |
| void | ref () const |
| Increments the reference count. | |
| void | unref () const |
| Decrements the reference count. | |
| bool | is_shared () const |
| Check if the object is shared. | |
| int | nb_refs () const |
| Gets the number of references that point to this object. | |
Protected Member Functions | |
| virtual void | run_concurrent_threads (ThreadGroup &threads, index_t max_threads)=0 |
| Runs a group of Threads concurrently. | |
| ~ThreadManager () override | |
Protected Member Functions inherited from GEO::Counted | |
| Counted () | |
| Creates a reference counted object. | |
| virtual | ~Counted () |
| Destroys a reference counted object. | |
Static Protected Member Functions | |
| static void | set_thread_id (Thread *thread, index_t id) |
| Sets the id of a thread. | |
| static void | set_current_thread (Thread *thread) |
| Specifies the current instance, used by current(). | |
Additional Inherited Members | |
Static Public Member Functions inherited from GEO::Counted | |
| static void | ref (const Counted *counted) |
| Increments the reference count. | |
| static void | unref (const Counted *counted) |
| Decrements the reference count. | |
Platform-independent base class for running concurrent threads.
The ThreadManager manager provides a platform-independent abstract interface for running concurrent Threads and managing critical sections.
The ThreadManager is derived in multiple platform-specific or technology-specific implementations.
Platform-specific implementations:
Technology-specific implementations:
Which ThreadManager to use is determined at runtime by Process::initialize() according to the current platform or the current available technology.
|
overrideprotected |
ThreadManager destructor
|
pure virtual |
Gets the maximum number of possible concurrent threads.
Implemented in GEO::MonoThreadingThreadManager.
|
protectedpure virtual |
Runs a group of Threads concurrently.
This start the concurrent execution of the threads contained in vector threads, using the given number of threads max_threads. The execution terminates when the last thread terminates.
| [in] | threads | the vector of threads to be executed. |
| [in] | max_threads | maximum number of threads allowed for this execution. It is always greater than one |
Implemented in GEO::MonoThreadingThreadManager.
|
virtual |
Runs a group of Threads.
This start the execution of the threads contained in vector threads.
If the threads cannot be executed in a concurrent environment (multi-threading is disabled or the number of maximum threads is 1), then the threads are executed sequentially. Otherwise the function run_concurrent_threads() is called to execute the threads concurrently. The execution terminates when the last thread terminates.
| [in] | threads | the vector of threads to be executed. |
|
inlinestaticprotected |
Specifies the current instance, used by current().
Stores the specified thread in the thread-local-storage static variable so that current() can retrieve it. Should be called by the ThreadManager right before launching the threads.
| [in] | thread | a pointer to the thread currently executed |