mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-06 18:10:40 +02:00
parallelized enabledatastreaming
This commit is contained in:
parent
bbbd4731d7
commit
57ae305c7d
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user