 |
OpendTect
6.6
|
Go to the documentation of this file.
18 class ParallelTaskRunner;
70 bool execute() {
return executeParallel(
true); }
135 virtual bool doFinish(
bool success) {
return success; }
140 friend class ParallelTaskRunner;
180 #define mDeclareParallelCalcStd(uimsg) \
182 bool reportprogress_; \
183 void setReport(bool yn) { reportprogress_ = yn; } \
184 od_int64 nrIterations() const { return sz_; } \
185 uiString uiMessage() const { return uimsg; } \
186 uiString uiNrDoneText() const { return sPosFinished(); } \
188 #define mDefParallelCalcNoPars(clss,uimsg) \
189 class clss : public ParallelTask \
190 { mODTextTranslationClass(clss) \
192 mDeclareParallelCalcStd(uimsg) \
193 clss( od_int64 _sz_ ) : sz_(_sz_), reportprogress_(true) {} \
195 #define mDefParallelCalc1Par(clss,uimsg,T1,v1) \
196 class clss : public ParallelTask \
197 { mODTextTranslationClass(clss) \
199 mDeclareParallelCalcStd(uimsg) \
201 clss( od_int64 _sz_, T1 _##v1##_ ) \
202 : sz_(_sz_), reportprogress_(true), v1##_(_##v1##_) {} \
204 #define mDefParallelCalc2Pars(clss,uimsg,T1,v1,T2,v2) \
205 class clss : public ParallelTask \
206 { mODTextTranslationClass(clss) \
208 mDeclareParallelCalcStd(uimsg) \
209 T1 v1##_; T2 v2##_; \
210 clss( od_int64 _sz_, T1 _##v1##_, T2 _##v2##_ ) \
211 : sz_(_sz_), reportprogress_(true) \
212 , v1##_(_##v1##_), v2##_(_##v2##_) {} \
214 #define mDefParallelCalc3Pars(clss,uimsg,T1,v1,T2,v2,T3,v3) \
215 class clss : public ParallelTask \
216 { mODTextTranslationClass(clss) \
218 mDeclareParallelCalcStd(uimsg) \
219 T1 v1##_; T2 v2##_; T3 v3##_; \
220 clss( od_int64 _sz_, \
221 T1 _##v1##_, T2 _##v2##_, T3 _##v3##_ ) \
222 : sz_(_sz_), reportprogress_(true) \
223 , v1##_(_##v1##_), v2##_(_##v2##_) , v3##_(_##v3##_) {} \
225 #define mDefParallelCalc4Pars(clss,uimsg,T1,v1,T2,v2,T3,v3,T4,v4) \
226 class clss : public ParallelTask \
227 { mODTextTranslationClass(clss) \
229 mDeclareParallelCalcStd(uimsg) \
230 T1 v1##_; T2 v2##_; T3 v3##_; T4 v4##_; \
231 clss( od_int64 _sz_, \
232 T1 _##v1##_, T2 _##v2##_, T3 _##v3##_, T4 _##v4##_ ) \
233 : sz_(_sz_), reportprogress_(true) \
234 , v1##_(_##v1##_), v2##_(_##v2##_) \
235 , v3##_(_##v3##_), v4##_(_##v4##_) {} \
238 #define mDefParallelCalc5Pars(clss,uimsg,T1,v1,T2,v2,T3,v3,T4,v4,T5,v5) \
239 class clss : public ParallelTask \
240 { mODTextTranslationClass(clss) \
242 mDeclareParallelCalcStd(uimsg) \
243 T1 v1##_; T2 v2##_; T3 v3##_; T4 v4##_; T5 v5##_;\
244 clss( od_int64 _sz_, T1 _##v1##_, T2 _##v2##_, T3 _##v3##_, \
245 T4 _##v4##_, T5 _##v5##_ ) \
246 : sz_(_sz_), reportprogress_(true) \
247 , v1##_(_##v1##_), v2##_(_##v2##_) \
248 , v3##_(_##v3##_), v4##_(_##v4##_), v5##_(_##v5##_) {} \
250 #define mDefParallelCalc6Pars(clss,uimsg,T1,v1,T2,v2,T3,v3,T4,v4,T5,v5,T6,v6) \
251 class clss : public ParallelTask \
252 { mODTextTranslationClass(clss) \
254 mDeclareParallelCalcStd(uimsg) \
255 T1 v1##_; T2 v2##_; T3 v3##_; T4 v4##_; T5 v5##_; T6 v6##_;\
256 clss( od_int64 _sz_, T1 _##v1##_, T2 _##v2##_, T3 _##v3##_, \
257 T4 _##v4##_, T5 _##v5##_, T6 _##v6##_ ) \
258 : sz_(_sz_), reportprogress_(true) \
259 , v1##_(_##v1##_), v2##_(_##v2##_) \
260 , v3##_(_##v3##_), v4##_(_##v4##_) \
261 , v5##_(_##v5##_), v6##_(_##v6##_) {} \
263 #define mDefParallelCalc7Pars(clss,uimsg,T1,v1,T2,v2,T3,v3,T4,v4,T5,v5, \
265 class clss : public ParallelTask \
266 { mODTextTranslationClass(clss) \
268 mDeclareParallelCalcStd(uimsg) \
269 T1 v1##_; T2 v2##_; T3 v3##_; T4 v4##_; \
270 T5 v5##_; T6 v6##_; T7 v7##_; \
271 clss( od_int64 _sz_, T1 _##v1##_, T2 _##v2##_, T3 _##v3##_, \
272 T4 _##v4##_, T5 _##v5##_, T6 _##v6##_, T7 _##v7##_ ) \
273 : sz_(_sz_), reportprogress_(true) \
274 , v1##_(_##v1##_), v2##_(_##v2##_) \
275 , v3##_(_##v3##_), v4##_(_##v4##_) \
276 , v5##_(_##v5##_), v6##_(_##v6##_), v7##_(_##v7##_) {} \
278 #define mDefParallelCalcBody(preop,impl,postop) \
279 bool doWork( od_int64 start, od_int64 stop, int ) \
282 for ( od_int64 idx=start; idx<=stop; idx++ ) \
283 { impl; if ( reportprogress_ ) quickAddToNrDone(idx); } \
void addToNrDone(int64_t increment)
ProgressMeter * progressmeter_
Definition: paralleltask.h:141
Threads::Atomic< int64_t > nrdone_
Definition: paralleltask.h:142
virtual bool executeParallel(bool parallel)
int64_t totalnrcache_
Definition: paralleltask.h:146
bool execute()
Definition: paralleltask.h:70
#define od_int64
Definition: plftypes.h:35
int64_t nrDone() const
May be -1, i.e. class does not report nrdone.
is an interface where processes can report their progress.
Definition: progressmeter.h:21
virtual int maxNrThreads() const
#define mExpClass(module)
Definition: commondefs.h:177
virtual bool doFinish(bool success)
Definition: paralleltask.h:135
int64_t calculateThreadSize(int64_t totalnr, int nrthreads, int thread) const
virtual int64_t nrIterations() const =0
#define mODTextTranslationClass(clss)
Definition: uistring.h:40
virtual bool doPrepare(int nrthreads)
Definition: paralleltask.h:133
void setProgressMeter(ProgressMeter *)
Must be called before execute()
Generalization of something (e.g. a computation) that needs to be done in multiple steps.
Definition: task.h:28
ParallelTask(const ParallelTask &)
int64_t nrdonebigchunksz_
Definition: paralleltask.h:147
static uiString sTrcFinished()
Definition: paralleltask.h:89
virtual int minThreadSize() const
Definition: paralleltask.h:97
int64_t totalNr() const
Definition: paralleltask.h:87
Generalization of a task that can be run in parallel.
Definition: paralleltask.h:66
String that is able to hold international (UTF-8) strings for the user interface.
Definition: uistring.h:121
void quickAddToNrDone(int64_t loopidx)
virtual bool stopAllOnFailure() const
Definition: paralleltask.h:102
virtual bool doWork(int64_t start, int64_t stop, int threadidx)=0
static uiString sPosFinished()
Definition: paralleltask.h:88
ParallelTask(const char *nm=0)
Generated at
for the OpendTect
seismic interpretation project.
Copyright (C): dGB Beheer B.V. 1995-2021