MeVisLab Toolbox Reference
|
Classic ML host used internally to calculate getTile and processAllPages requests. More...
#include <mlClassicHost.h>
Public Member Functions | |
ClassicHost (Host *host) | |
~ClassicHost () | |
MLErrorCode | processAllPages (Module &module, MLint outputIndex, SubImageBox region, ProcessAllPagesHandler *handler) |
Internal implementation of processAllPages functionality. | |
void | shutdownWorkerThreads () |
Shuts down and frees all worker threads; all threads are joined when this method returns. | |
void | enableTimeLineProfiling (bool flag) |
Enables timeline profiling. | |
ProcessingTimeLine & | getProcessingTimeLine () |
Returns access to the processing timeline. | |
Computation of image data in different memory allocation variations | |
MLErrorCode | getTile (PagedImage &outputImage, SubImageBox location, MLDataType dataType, void **data, const ScaleShiftData &scaleShiftData=ScaleShiftData()) |
Requests the image region location from the image outputImage . | |
Protected Member Functions | |
MLErrorCode | _processPagesHelper (PagedImage &outputImage, const SubImageBox &location, MLDataType dataType, void *data, const ScaleShiftData &scaleShiftData, bool calledByProcessAllPages) |
Helper function doing the real page processing work for processAllPages or getTile methods. | |
MLErrorCode | _getTileCore (PagedImage &outputImage, SubImageBox location, MLDataType dataType, void *data, const ScaleShiftData &scaleShiftData) |
Core of the getTile method: It fills a chunk of memory assuming that it has the correct size. | |
void | _initializePageData (ThreadDataClass &tData, bool permitInCaching) |
Initializes the buffer tData with all settings that are needed to compute one output page. | |
ThreadDataClass ** | _getWorkForWorkerThread (size_t workIndex) |
Returns the work for worker thread with workIndex . | |
void | _increaseErrorCounter () |
Increases the error counter (thread-safe). | |
(Sub)Image calculation | |
void | _calcPages (PagedImage &outputImage, const std::vector< MLint > pageIDs, MLMemoryBlockHandle *memoryBlockHandles) |
For the output image outputImage , all invalid pages with numbers given by pageIDs are calculated. | |
Static Protected Member Functions | |
static void | _calcPagesMT (ThreadDataClass **threadDataContainers, ProcessingTimeLine::TimeLine *timeLine) |
Calculates a sequence of output pages where each one has a set of input pages. | |
Protected Attributes | |
Parameter | |
WaitCondition | _workAvailable |
A wait condition to signal waiting worker threads that there is more work to be done. | |
WaitCondition | _workDone |
A wait condition that signals that all threads have done their work. | |
Mutex | _workAvailableMutex |
Mutex that protects the work assignment to the worker threads. | |
std::vector< Thread * > | _workerThreads |
The worker threads that are currently started. | |
std::vector< ThreadDataClass ** > | _workerThreadClassData |
The offset into the current ThreadDataClass array; sorted by worker threads. | |
bool | _shutdownWorkerThreadsFlag |
Flag that signals that the worker threads should shutdown. | |
Mutex | _countSyncMutex |
A mutex used at many position for a safe manipulations of members in the host instance by threads. | |
MLint32 | _errorCounter |
Counter for errors detected in calcPagesMT, usually in different threads. Only valid during thread calculations. | |
MLint32 | _numFinishedThreads |
Counter for the number of already finished threads. Only valid during thread calculations. | |
MLint32 | _numLaunchedThreads |
Counter for the number of really launched threads. Only valid during thread calculations. | |
size_t | _maxNumPagesToCalculateInSingleWorkerThread |
The maximum number of pages that a single worker thread will calculate. | |
Host * | _host |
The core host. | |
ProcessingTimeLine | _profile |
ProcessingTimeLine::TimeLine * | _guiTimeLine |
std::vector< ProcessingTimeLine::TimeLine * > | _workerThreadTimeLines |
bool | _useTimeLineProfiling |
Friends | |
struct | CalcPagesWorkerThreadFunction |
Makes the worker thread function a friend. | |
Classic ML host used internally to calculate getTile and processAllPages requests.
Definition at line 38 of file mlClassicHost.h.
ml::ClassicHost::ClassicHost | ( | Host * | host | ) |
ml::ClassicHost::~ClassicHost | ( | ) |
|
protected |
For the output image outputImage
, all invalid pages with numbers given by pageIDs
are calculated.
Errors throw exceptions.
Notes:
|
staticprotected |
Calculates a sequence of output pages where each one has a set of input pages.
For each page, all necessary input/output/buffering information must have been initialized in initializePageData before.
|
protected |
Core of the getTile method: It fills a chunk of memory assuming that it has the correct size.
Updating memory outputs of output images is optional. Not to be called directly by users!
|
protected |
Returns the work for worker thread with workIndex
.
|
protected |
Increases the error counter (thread-safe).
|
protected |
Initializes the buffer tData
with all settings that are needed to compute one output page.
permitInCaching
must be set true
only for one (the last) thread data container if many threads are calculated in parallel. Otherwise, more than one thread would modify the memory output of an input.
|
protected |
Helper function doing the real page processing work for processAllPages or getTile methods.
If the parameter calledByProcessAllPages
is true:
Requests the image region location
from the outputImage
. The image data will be stored at memory address data as dataType
. The data will be scaled linearly depending on the settings of the scaleShiftData
(see ScaleShiftData).
If the parameter calledByProcessAllPages is false:
Requests the image region location
from the outputImage
. Values of data
, scaleShiftData
, and dataType
are ignored.
Enables timeline profiling.
Definition at line 87 of file mlClassicHost.h.
References mlrange_cast().
|
inline |
Returns access to the processing timeline.
Definition at line 90 of file mlClassicHost.h.
MLErrorCode ml::ClassicHost::getTile | ( | PagedImage & | outputImage, |
SubImageBox | location, | ||
MLDataType | dataType, | ||
void ** | data, | ||
const ScaleShiftData & | scaleShiftData = ScaleShiftData() ) |
Requests the image region location
from the image outputImage
.
If *data
is a non-NULL pointer, it must be large enough to hold the entire requested image data. If *data
is NULL, the getTile function will allocate enough memory for the image data. The image data will be stored in that memory as data type dataType
. The data will be scaled linearly depending on the settings of the scaleShiftData (see ScaleShiftData). The return value data
then points to the allocated memory. IMPORTANT: Memory allocated with any Host::getTile function must be freed with the Host::freeTile function or with the corresponding mapped freeTile function of the class Module.
MLErrorCode ml::ClassicHost::processAllPages | ( | Module & | module, |
MLint | outputIndex, | ||
SubImageBox | region, | ||
ProcessAllPagesHandler * | handler ) |
Internal implementation of processAllPages functionality.
void ml::ClassicHost::shutdownWorkerThreads | ( | ) |
Shuts down and frees all worker threads; all threads are joined when this method returns.
Makes the worker thread function a friend.
Definition at line 175 of file mlClassicHost.h.
|
protected |
A mutex used at many position for a safe manipulations of members in the host instance by threads.
Typically for changing counters, etc.
Definition at line 212 of file mlClassicHost.h.
|
protected |
Counter for errors detected in calcPagesMT, usually in different threads. Only valid during thread calculations.
Definition at line 215 of file mlClassicHost.h.
|
protected |
Definition at line 230 of file mlClassicHost.h.
|
protected |
The core host.
Definition at line 227 of file mlClassicHost.h.
|
protected |
The maximum number of pages that a single worker thread will calculate.
Definition at line 224 of file mlClassicHost.h.
|
protected |
Counter for the number of already finished threads. Only valid during thread calculations.
Definition at line 218 of file mlClassicHost.h.
|
protected |
Counter for the number of really launched threads. Only valid during thread calculations.
Definition at line 221 of file mlClassicHost.h.
|
protected |
Definition at line 229 of file mlClassicHost.h.
|
protected |
Flag that signals that the worker threads should shutdown.
Definition at line 208 of file mlClassicHost.h.
|
protected |
Definition at line 233 of file mlClassicHost.h.
|
protected |
A wait condition to signal waiting worker threads that there is more work to be done.
Definition at line 193 of file mlClassicHost.h.
|
protected |
Mutex that protects the work assignment to the worker threads.
Definition at line 199 of file mlClassicHost.h.
|
protected |
A wait condition that signals that all threads have done their work.
Definition at line 196 of file mlClassicHost.h.
|
protected |
The offset into the current ThreadDataClass array; sorted by worker threads.
Definition at line 205 of file mlClassicHost.h.
|
protected |
The worker threads that are currently started.
Definition at line 202 of file mlClassicHost.h.
|
protected |
Definition at line 232 of file mlClassicHost.h.