#include <cartobase/thread/threadedLoop.h>
Definition at line 48 of file threadedLoop.h.
◆ ThreadedLoop()
| carto::ThreadedLoop::ThreadedLoop |
( |
LoopContext * | loopContext, |
|
|
int | startIndex, |
|
|
int | count, |
|
|
int | maxThreadCount = 0, |
|
|
float | threadsByCpu = 1.0f ) |
◆ ~ThreadedLoop()
| virtual carto::ThreadedLoop::~ThreadedLoop |
( |
| ) |
|
|
virtual |
◆ endThreadsWhenDone()
| bool carto::ThreadedLoop::endThreadsWhenDone |
( |
| ) |
const |
The loop can work in two modes: single run (endThreadsWhenDone() is true) or multiple runs (endThreadsWhenDone is false).
- In single run mode, launch() creates the needed number of threads, runs them to complete the loop, then destroys every thread.
- In multiple runs mode, the first call to launch() creates the needed threads, but doesn't destroy them after the loop is finished. Each thread stays alive and blocks on a semaphore. When you call launch() again later for another run (possibly after changing the LoopContext), the existing threads will be re-used for the next loop, so the cost of destroying and creating threads again is avoided. All threads will be actually destroyed when the ThreadedLoop is deleted.
◆ launch()
| bool carto::ThreadedLoop::launch |
( |
bool | resetGauge = true, |
|
|
bool | resetCancel = true ) |
run the loop to the end until all iterations are finished
◆ run()
| void carto::ThreadedLoop::run |
( |
| ) |
|
run one iteration step. It normally calls the LoopContext diIt() method
◆ runSingleThreaded()
| bool carto::ThreadedLoop::runSingleThreaded |
( |
bool | resetGauge = true, |
|
|
bool | resetCancel = true ) |
◆ setEndThreadsWhenDone()
| void carto::ThreadedLoop::setEndThreadsWhenDone |
( |
bool | x | ) |
|
Warning: it's possibly not safe to change this value from false to true after launch() has been called.
◆ setLoopContext()
| void carto::ThreadedLoop::setLoopContext |
( |
LoopContext * | | ) |
|
This function is only useful in multiple run mode (endThreadsWhenDone false).
Call it only between two runs, from the control thread (the thread running the loop).
◆ setLoopCount()
| void carto::ThreadedLoop::setLoopCount |
( |
int | n | ) |
|
The documentation for this class was generated from the following file: