【发布时间】:2021-03-15 07:36:48
【问题描述】:
我正在尝试计算多线程 C++ 程序来计算前 N 个整数的立方和。
每个线程应该计算一个部分和以平均分配它们之间的工作。 与 pthread_create 参数斗争它给出了错误。
#include <iostream>
#include <pthread.h>
#define n 6
#define p 4
using namespace std;
int part = 0;
int arr[] = { 1,2,3,4,5,6 };
int sum[p]={0};
void* cube_array(int arr[])
{
int thread_part = part++;
for (int i = thread_part * (n/ p); i < (thread_part + 1) * (n/ p); i++) {
sum[thread_part] += arr[i]*arr[i]*arr[i];
}
return NULL;
}
// Driver Code
int main()
{
pthread_t threads[p];
for (int i = 0; i < p; i++)
pthread_create(&threads[i], NULL, cube_array, (void*)NULL);
for (int i = 0; i < p; i++)
pthread_join(threads[i], NULL);
int total_sum = 0;
for (int i = 0; i < p; i++)
total_sum += sum[i];
cout << "sum is " << total_sum << endl;
return 0;
}
【问题讨论】:
-
这能回答你的问题吗? Casting a function pointer to another type
标签: c++ multithreading