Я вроде новичок в параллельных вычислениях, поэтому, глядя на java код для потоковой передачи:
int threadNum = 2;
in middleSum[threadNum];
int size = 2000;
int i = 0;
int sum = 0;
int array[size];
int setThreadSize = size/threadNum;
// this part will be excueted by a thread with different `idThread`
for(i=idThread*setThreadSize;i<(idThread-1)*setThreadSize;i++){
middleSum[idThread] += array[i];
}
wait(); // waiting function that should wait for all threads
// only first thread (thread 0) will excute this part
if(idThread==0){
for(i=0;i<threadNum;i++){
sum += middleSum[i];
}
}
Насколько я могу видеть, массив правильно разделен между потоками, но я не уверен; как вы думаете?