私はC++プログラミングとスレッドの実装に不慣れです。私の目標は、2つのスレッドを使用して1つの配列の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;
}