inline double mt_incr(double& target, T inc) { #ifdef __MTA__ double res = mt_readfe(target); mt_write(target, res + inc); #elif _OPENMP double res; #pragma omp critical { res = target; target += inc; } #elif USING_QTHREADS double res = qthread_dincr(&target, inc); #else double res = target; target += inc; #endif return res; }
inline double qthread_incr(double *operand, const double incr) { return qthread_dincr(operand, incr); }