您好。我需要用随机数编写创建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个相同的数字)。我知道它为什么,但我不知道如何解决它。