| Geogram Version 1.9.7
    A programming library of geometric algorithms | 
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 |