我是 C++ 编程和线程实现的新手。我的目标是设计一个程序,它使用两个线程将元素添加到一个数组的 2 个子范围(元素 0-9 和元素 10-19)中,然后将线程返回的值相加以制定所有元素的总和数组。我已经编译了以下代码,并且基于我对“gdb”调试器的有限知识,我的问题似乎与 sum_function 中的指针有关。我无法弄清楚我的错误。任何帮助表示赞赏!
#include <iostream>
#include <pthread.h>
using namespace std;
int arguments[20];
void *sum_function (void *ptr);
int main (void) {
pthread_t thread1, thread2;
int total, sum1, sum2 = 0;
int lim1 = 10;
int lim2 = 20;
for (int i = 0; i < 20; i++)
cin >> arguments[i];
sum1 = pthread_create ( &thread1, NULL, sum_function, (void*) lim1);
sum2 = pthread_create ( &thread2, NULL, sum_function, (void*) lim2);
pthread_join (thread1, NULL);
pthread_join (thread2, NULL);
total = sum1 + sum2;
cout << "OUTPUT \n" << total << "\n";
return (0);
}
void *sum_function (void *lim) {
int sum = 0;
for (int j = 0; j < (*(int*)lim); j++)
sum += arguments[j];
return (void*) sum;
}