C 使用pthread调用方法时如何使用多个参数?

C 使用pthread调用方法时如何使用多个参数?,c,multithreading,pthreads,C,Multithreading,Pthreads,我的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_crea

我的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)));
我试图编译我的代码,但它不起作用。我认为问题在于我给新线程提供了它应该运行的方法的参数。那么,有没有一种方法可以在给pthread的方法中使用多个参数呢

谢谢你的帮助。谢谢……:)

那么,有没有一种方法可以在给pthread的方法中使用多个参数呢

是:必须在结构中包装多个参数:

struct Args {
  int begin, end;
  int *arr;
};

void *call_checkArrayPart(void *p) {
  struct Args *args = (struct Args *) p;
  int rc = checkArrayPart(args->begin, args->end, args->arr);
  return (void *) rc;
}
创建时,您需要将参数打包到此结构中:

struct Args args[n];
for (int i = 0; i< n - 1; i++) {
  struct Args *arg = &args[i];
  arg->begin = size * i;
  args->end = args->begin + size;
  args->arr = values;
  pthread_create(&threads[i], NULL, call_checkArrayPart, arg);
}
struct Args Args[n];
对于(int i=0;ibegin=size*i;
参数->结束=参数->开始+大小;
args->arr=值;
pthread_create(&threads[i],NULL,call_checkArrayPart,arg);
}

结束传递的值将小于为
开始传递的值。所以循环不会迭代。thx,我更正了是的,但那是错误还是发布错误?请复制/粘贴代码。您的代码是否获得了
-1
+1
?现在不清楚你在问什么。只是一个发布错误。我以后会使用复制/粘贴,对不起。。。这意味着我的代码仍然无法工作,你可以传递一个结构。首先:非常感谢…:)我有一个理解问题。什么是行
struct Args*Args=(struct Args*)用于?我是C语言的新手,我不明白这行代码会做什么。@Mr.Moose抱歉,这是一个打字错误。实际上有两个打字错误。固定的。
struct Args args[n];
for (int i = 0; i< n - 1; i++) {
  struct Args *arg = &args[i];
  arg->begin = size * i;
  args->end = args->begin + size;
  args->arr = values;
  pthread_create(&threads[i], NULL, call_checkArrayPart, arg);
}