Commit b28fd79f authored by Alexander Alekhin's avatar Alexander Alekhin

core: parallel_for_(): propagate RNG state from the main thread

parent 78784040
......@@ -174,6 +174,9 @@ namespace
double len = wholeRange.end - wholeRange.start;
nstripes = cvRound(_nstripes <= 0 ? len : MIN(MAX(_nstripes, 1.), len));
// propagate main thread state
rng = cv::theRNG();
#ifdef ENABLE_INSTRUMENTATION
pThreadRoot = cv::instr::getInstrumentTLSStruct().pCurrentNode;
#endif
......@@ -195,6 +198,9 @@ namespace
#endif
CV_INSTRUMENT_REGION()
// propagate main thread state
cv::theRNG() = rng;
cv::Range r;
r.start = (int)(wholeRange.start +
((uint64)sr.start*(wholeRange.end - wholeRange.start) + nstripes/2)/nstripes);
......@@ -208,6 +214,7 @@ namespace
const cv::ParallelLoopBody* body;
cv::Range wholeRange;
int nstripes;
cv::RNG rng;
#ifdef ENABLE_INSTRUMENTATION
cv::instr::InstrNode *pThreadRoot;
#endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment