void UnixProcessFunction(int processId){
  int i,j;

  for(i = processId; i < mAlines; i += numUnixProcess){    
	   
     int* processLine = (int*) malloc(mAcolumns * sizeof(int));
     getLineValues(matrixA, mAcolumns, i, processLine);
     
     for(j = 0; j < mBcolumns; j++){
       int* processColumn = (int*) malloc(mBlines * sizeof(int));
       
       getColumnValues(matrixB,mBlines,j,processColumn);
       
       matrixResult[i * mResultcolumns + j] = multiplyLineColumn(processLine, processColumn, mAcolumns);
     }
  }
}
예제 #2
0
파일: main.c 프로젝트: AntonioModer/random
int* forkn(int n, int *buckets, int *matrix1, int n1, int m1, int *matrix2, int n2, int m2) {
    pid_t pid;
    int i, j, l;
    int current_line = 0;
    int k = 0;
    int *result_matrix = (int*)calloc(n1*m2, sizeof(int));
    for (i = 0; i < n; i++) {
        if ((pid = vfork()) < 0) {
            printf("vfork error");
        } else if (pid == 0) {
            printf("child ");
            int n_lines = buckets[k];
            for (j = 0; j < n_lines; j++) {
                for (l = 0; l < m2; l++) {
                    result_matrix[ID(m2,current_line,l)] = multiplyLineColumn(matrix1, matrix2, m1, m2, current_line, l);
                }
                current_line++;
            }
            k++;
            _exit(0);
        }
    }
    return result_matrix;
}