c - C中多线程,求4个数组的平均值

标签 c multithreading

我是多线程的新手,昨天上了第一课。所以我写了一个程序来获取 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/

相关文章:

从 Shell 脚本收集返回值

java - 如何提高大文件的加密/解密性能

java - 如何优化线程数以加快处理速度

C++ 在不同内核上运行线程

c - Linux 中的 C 线程同步

c - arctan(x) 函数给出错误答案

c - 在 C 中从字符串中提取数字时出现奇怪的错误

c - union 体中的数据被覆盖

java - Cython/Jython 是一种独立的语言吗?

WaitForSingleEvent 可以等待事件重置吗?