У меня есть функция с именем doWork(int a, int b, int c, int amount)
, которая вычисляет некоторую сумму из общего набора вычислений. В основном я определяю, сколько вычислений должен выполнять каждый вызов функции. Мне нужно знать, как передать a,b,c
, чтобы каждый вызов функции выполнял свой собственный фрагмент вычисления.
int nprocs = 2;
int total = 10
public static void main() {
//total number of calculations to compute
int totalLoad = ((total*total*total)/6)-(total/6);
//number of calculations per function call
int workLoad = totalLoad/nproc;
for(int i = 0; i < nproc; i++) {
doWork(a, b, c, workLoad);
}
}
public void doWork(int i,int j,int k, int amount) {
boolean start = true;
for(; i < total && amount != 0; i++) {
if(!start) {
j = i+1;
}
for(; j < total && amount != 0; j++) {
if(!start) {
k = j;
}
for(; k < total && amount != 0; k++) {
if(start) {
start = false;
}
//some calculation here
System.out.println(format(i,j,k));
amount--;
}
}
}
Каждый вызов функции должен обрабатывать отдельный подраздел общего расчета, который необходимо выполнить. Например:
nproc = 2
totalLoad = 6
Total work: Function call 1:
calc 1 calc 1
calc 2 calc 2
calc 3 calc 3
calc 4
calc 5 Function call 2:
calc 6 calc 4
calc 5
calc 6
Кроме того, есть ли более чистый способ написания функции doWork (). Мне это кажется грязным.