【发布时间】:2020-05-10 15:02:01
【问题描述】:
我的 C 程序有问题,因为我真的不知道如何将 pthread_create 方法与具有多个参数的函数一起使用。
我的代码将在数组中找到素数。因此我不得不使用n 线程,每个线程都在数组的一部分中查找。
这是我的代码的样子:
for (int i = 0; i< n - 1; i++) {
pthread_create(&threads[i], NULL, checkArrayPart,(size*i, size*(i+1),values));
}
pthread_create(&threads[n-1], NULL, checkArrayPart,(size*i, size*(i+1),values)));
方法checkArrayPart 如下所示:
int checkArrayPart(int begin, int end, int arr[]){
int localCounter = 0;
for (int i = begin; i <= end; i++) {
if (isPrime(arr[i])) {
localCounter++;
}
}
return localCounter;
}
我试图编译我的代码,但它不工作。我认为问题出在我为新线程提供它将运行的方法的参数的部分。那么,有没有办法在给 pthread 的方法中使用多个参数?
感谢您的帮助。谢谢... :)
【问题讨论】:
-
为
end传递的值将小于为begin传递的值。所以循环不会迭代。 -
谢谢,我更正了
-
是的,但这是错误还是发布错误?请复制/粘贴代码。你的代码有
-1或+1吗?现在不清楚你在问什么。 -
只是一个发布错误。以后我会使用复制/粘贴,对不起...所以这意味着我的代码仍然无法正常工作
-
你可以传递一个结构体。
标签: c multithreading pthreads