我是多线程的新手,昨天上了第一课。所以我写了一个程序来获取 4 个大数组的平均值,每个数组都是一个线程,主线程等待所有线程并给出 4 个数组的平均值。这是可能的,因为每个线程给出一个数组的平均值。该数组只是一个带有 float 组的头文件。
它编译但给我一个段错误,我不明白为什么。
#include "gemiddelde.h"
#include <stdlib.h>
#include <stdio.h>
float *gemiddelde(void *arg)
{
float *a;
int i;
a = (float *)arg;
float * som;
for( i = 0; i < 100000; i++)
*som += a[i];
*som = *som / 100000;
return som;
}
int main()
{
pthread_t t1,t2,t3,t4;
float * som1, * som2, * som3, * som4, *result;
pthread_create(&t1,NULL,gemiddelde,a1);
pthread_create(&t2,NULL,gemiddelde,a2);
pthread_create(&t3,NULL,gemiddelde,a3);
pthread_create(&t4,NULL,gemiddelde,a4);
pthread_join(t1,som1);
pthread_join(t2,som2);
pthread_join(t3,som3);
pthread_join(t4,som4);
usleep(1);
*result = *som1 + *som2 + *som3 + *som4;
printf("Gemiddelde is: %f ", *result);
return 0;
}
有人可以帮助我吗?
亲切的问候,
最佳答案
在
*result = *som1 + *som2 + *som3 + *som4;
result
用于单元化。将其设为普通的 float
而不是指针。
关于c - C中多线程,求4个数组的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8941720/