|
MeVisLab Toolbox Reference
|
A multithreaded processor that takes one or even multiple tile requests and can process them iteratively. More...
#include <mlMultiThreadedPageRequestProcessor.h>
Public Member Functions | |
| MultiThreadedPageRequestProcessor (Host *host=nullptr) | |
| ~MultiThreadedPageRequestProcessor () override | |
| bool | supportsMultiThreading () override |
| Returns whether multithreading is supported. | |
| void | setNumWorkerThreads (std::size_t threads) override |
| Sets number of worker threads. | |
| void | addRootTileRequest (TileRequest *tileRequest) override |
Adds the root tileRequest that should be processed; the ownership stays with the caller. | |
| void | processAll () override |
| Processes all requests until the cursors have traversed the entire tree and the queue is empty. | |
| void | process (double timeBudget) override |
Process the requests for the given timeBudget given in seconds. | |
| void | launchMultiThreading () |
| Launches the multithreading. | |
| bool | needsProcessing () override |
| Returns whether the tile request needs some more processing. | |
| void | append (PageRequest *request) override |
| Implements PageRequestQueueInterface interface. | |
| void | enterProcessingScope () override |
| Enters a recursive processing scope. This is always called from main thread! | |
| void | leaveProcessingScope () override |
| Leaves a recursive processing scope. This is always called from main thread! | |
| bool | processingWasSingleThreaded () const override |
| Processing is always single-threaded, implemented only for testing purposes. | |
| void | setAllowLateMultiThreadingStart (bool flag) |
This can be set to false to debug the single-threaded part of this class. | |
Public Member Functions inherited from ml::PageRequestProcessorBase | |
| PageRequestProcessorBase (Host *host) | |
| ~PageRequestProcessorBase () override | |
| void | removeCancelledRequests () override |
| Removes all requests that are canceled and no longer needed. | |
| ProcessingTimeLine & | getProcessingTimeLine () |
| Returns access to the processing timeline. | |
| ProcessingTimeLine::TimeLine * | getOverviewTimeLine () |
| Returns access to the overview timeline (only if timeline profiling is on). | |
| void | enableTimeLineProfiling (bool flag) |
| Enables/disables timeline profiling. | |
| bool | isTimeLineProfilingEnabled () const |
| Returns whether timeline profiling is enabled. | |
| int | getProcessingScope () const |
| Returns the current processing scope. | |
| void | enterProcessingScope () override |
| Enters a recursive processing scope. This is always called from main thread! | |
| void | leaveProcessingScope () override |
| Leaves a recursive processing scope. This is always called from main thread! | |
Public Member Functions inherited from ml::PageRequestProcessor | |
| ~PageRequestProcessor () override | |
| Virtual destructor. | |
Public Member Functions inherited from ml::PageRequestQueueInterface | |
| virtual | ~PageRequestQueueInterface () |
| Virtual destructor to get rid of warning. | |
Additional Inherited Members | |
Static Public Member Functions inherited from ml::PageRequestProcessor | |
| static void | enableTileRequestAllocationFailure (int count=1) |
Enables failing on every count allocation. | |
| static void | disableTileRequestAllocationFailure () |
| Disables allocation failure. This is the default! | |
Protected Member Functions inherited from ml::PageRequestProcessorBase | |
| bool | createMoreWork (bool sleepWhenBlocked, bool *allBlocked=nullptr, MLint pageRequestLimit=100000, MLint *resultPageRequestCount=nullptr) |
Creates more work items, returns true if new work was created. | |
| void | setupCurrentProcessingScope () |
| Helper. | |
| void | terminateAllRequestsInGUIThread () |
| Terminates all requests. | |
| void | addNewCursor (PageRequestCursor *cursor) |
| Adds the new cursor. | |
| UserThreadData * | getUserThreadData (PageRequest *request, PerThreadStorage &perThreadStorage) |
| Returns or allocates the UserThreadData for the given request as part of the perThreadStorage. | |
Protected Attributes inherited from ml::PageRequestProcessorBase | |
| Host * | _host |
| Optional pointer to the host. | |
| bool | _terminated |
| Flag whether the calculation was terminated. | |
| int | _rootTileRequests |
| The number of root tile requests; if this gets down to 0, we are done. | |
| std::vector< std::vector< PageRequestCursor * > > | _cursors |
| The cursors that are handled by the producer thread, one list for each processing scope. | |
| int | _processingScope |
| The current processing scope (0 = BG tasks, 1 = normal get tile, >1 = recursive get tile). | |
| int | _producerProcessingScope |
| The current cursor scope of the producer. | |
| int | _producerCursorCounter |
| How many cursors the producer contains in all lists. | |
| int | _guiThreadRecursionCounter |
| The recursion of the GUI thread (0 = outer entry). | |
| ScopeStackEntry * | _currentScope |
| The current scope pointer. | |
| std::vector< ScopeStackEntry > | _scopeStack |
| Stack of processing scopes. | |
| TimeCounter | _progressUpdateTimer |
| Timer used for progress update from GUI thread. | |
| PerThreadStorage | _guiPerThreadStorage |
| The per-thread storage for the GUI thread. | |
| bool | _useTimeLineProfiling |
| ProcessingTimeLine | _profile |
| ProcessingTimeLine::TimeLine * | _guiThreadTimeLine |
| ProcessingTimeLine::TimeLine * | _overviewTimeLine |
A multithreaded processor that takes one or even multiple tile requests and can process them iteratively.
Definition at line 45 of file mlMultiThreadedPageRequestProcessor.h.
| ml::MultiThreadedPageRequestProcessor::MultiThreadedPageRequestProcessor | ( | Host * | host = nullptr | ) |
|
override |
|
overridevirtual |
Adds the root tileRequest that should be processed; the ownership stays with the caller.
Implements ml::PageRequestProcessor.
|
overridevirtual |
Implements PageRequestQueueInterface interface.
Implements ml::PageRequestQueueInterface.
|
overridevirtual |
Enters a recursive processing scope. This is always called from main thread!
Implements ml::PageRequestProcessor.
| void ml::MultiThreadedPageRequestProcessor::launchMultiThreading | ( | ) |
Launches the multithreading.
|
overridevirtual |
Leaves a recursive processing scope. This is always called from main thread!
Implements ml::PageRequestProcessor.
|
overridevirtual |
Returns whether the tile request needs some more processing.
Implements ml::PageRequestProcessor.
|
overridevirtual |
Process the requests for the given timeBudget given in seconds.
Implements ml::PageRequestProcessor.
|
overridevirtual |
Processes all requests until the cursors have traversed the entire tree and the queue is empty.
Implements ml::PageRequestProcessor.
|
inlineoverridevirtual |
Processing is always single-threaded, implemented only for testing purposes.
Implements ml::PageRequestProcessor.
Definition at line 81 of file mlMultiThreadedPageRequestProcessor.h.
|
inline |
This can be set to false to debug the single-threaded part of this class.
Definition at line 84 of file mlMultiThreadedPageRequestProcessor.h.
|
overridevirtual |
Sets number of worker threads.
Implements ml::PageRequestProcessor.
|
inlineoverridevirtual |
Returns whether multithreading is supported.
Implements ml::PageRequestProcessorBase.
Definition at line 52 of file mlMultiThreadedPageRequestProcessor.h.