parallelized enabledatastreaming

This commit is contained in:
Dhanya Maliakal 2017-06-22 16:59:41 +02:00
parent bbbd4731d7
commit 57ae305c7d

View File

@ -5658,21 +5658,42 @@ int multiSlsDetector::enableDataStreamingFromReceiver(int enable){
} }
int ret=-100, ret1;
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
if (detectors[idet]) { int ret=-100;
ret1=detectors[idet]->enableDataStreamingFromReceiver(enable); if(!threadpool){
if(detectors[idet]->getErrorMask()) cout << "Error in creating threadpool. Exiting" << endl;
setErrorMask(getErrorMask()|(1<<idet)); return -1;
if (ret==-100) }else{
ret=ret1; //return storage values
else if (ret!=ret1) int* iret[thisMultiDetector->numberOfDetectors];
ret=-1; for(int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++){
if(detectors[idet]){
iret[idet]= new int(-1);
Task* task = new Task(new func1_t <int,slsDetector,int,int>(&slsDetector::enableDataStreamingFromReceiver,
detectors[idet],enable,iret[idet]));
threadpool->add_task(task);
}
}
threadpool->startExecuting();
threadpool->wait_for_tasks_to_complete();
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; 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<<idet));
}
} }
} }
if(ret != dataSocketsStarted) if(ret != dataSocketsStarted)
return -1; ret = -1;
return ret; return ret;
} }