结构中的二维数组,带有C中的线程

时间:2017-12-10 18:31:03

标签: c arrays multithreading multidimensional-array

您好。我需要用随机数编写创建N个二维数组(N是我们的argv [1]和数组大小为N-N)的程序,然后创建N个线程。每个线程都获得自己的二维数组,并对每一行中的数字求和,并将最大值返回给主线程。主线程返回每个线程的最大总和。 这是我的代码

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <pthread.h>

struct arguments {
int N;
double *tab;
};

void *func(void* arguments)
{   
struct arguments *args = arguments; 
int i,j;
int N = args->N;
double number;
for(i=0; i<N; i++)
{  
   for (j=0; j<N; j++)
   {
    printf("Number = %d ", args->tab);              
   }
}
pthread_exit(NULL);
return NULL;
}
int main(int argc, char *argv[])
{
srand((int)time(NULL));
int N;
int i;
int j;
struct arguments args;
sscanf(argv[1],"%d",&N);
args.N = N;
double **tab;

tab = (double **)malloc(N * sizeof(double *));
args.tab = malloc(args.N*args.N*sizeof(double));
for(i=0; i<N; i++)
{
   tab[i]= (double*)malloc(N * sizeof(double));
}        
for(i=0; i<N; i++)
{  
  for(j=0; j<N; j++)
    {               
        tab[i][j]= rand()%20+1;
        args.tab = rand()%20+1;           
    }     
  pthread_t ptr;
  if (pthread_create(&ptr, NULL, func, (void *)&args) !=0){
  printf("You can't create a thread");
  return -1;
  }
  pthread_join(ptr, NULL);
}      
return 0;
}

我不知道如何使用这些数组从struct正确获取数据。这段代码只返回2个随机数(N = 2时我应该得到8),其余的就像那些2一样(一个线程有4个相同的数字,第二个线程有4个相同的数字)。我知道它为什么,但我不知道如何解决它。

0 个答案:

没有答案