From 134f13fc52112cde23add4de1c1a68f535aef768 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Mon, 30 Jul 2018 18:00:18 +0200 Subject: [PATCH] slsDetectorSoftware: back to original multi threading setTimer (removed parallelCallDetectorMember) due to change in function signature --- .../multiSlsDetector/multiSlsDetector.cpp | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index fcf73387d..61bca239c 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -2582,7 +2582,36 @@ int64_t multiSlsDetector::setTimer(timerIndex index, int64_t t, int imod) { } // multi - ret = parallelCallDetectorMember(&slsDetector::setTimer, index, t); + if(!threadpool){ + cout << "Error in creating threadpool. Exiting" << endl; + return -1; + }else{ + //return storage values + int64_t* iret[thisMultiDetector->numberOfDetectors]; + for(int idet=0; idetnumberOfDetectors; ++idet){ + if(detectors[idet]){ + iret[idet]= new int64_t(-1); + Task* task = new Task(new func3_t(&slsDetector::setTimer, + detectors[idet],index,t,imod,iret[idet])); + threadpool->add_task(task); + } + } + threadpool->startExecuting(); + threadpool->wait_for_tasks_to_complete(); + for(int idet=0; idetnumberOfDetectors; ++idet){ + if(detectors[idet]){ + if(iret[idet] != NULL){ + if (ret==-100) + ret=*iret[idet]; + else if (ret!=*iret[idet]) + ret=-1; + delete iret[idet]; + }else ret=-1; + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<