如何将多个值作为参数传递给C中的线程?

在C中,我如何将多个参数传递给线程?

通常情况下,我是这样做的,

pthread_create(&th,NULL,dosomething,(void*)connfd); void * dosomething(void *connfd) { // Doing something } 

在上面的例子中,我只将connfd值传递给线程’th’。

有没有办法传递多个值,以便它对我有用?

还有一件事,我们可以将数组作为参数传递给线程吗?

将几个值打包在堆上的struct (所以malloc并在之前填充它),然后使用指向该struct的指针调用pthread_create

 #include  #include  #include  void *genSimpleCurList(void *pnum) { void *retval; int i,j; j = 0; // when ptread_create , how to pass a parameters such as integer arrary to pthread while(j<10) { i =*((int *)pnum)+j; fprintf(stderr,"pthread creat with parameter is %d\n",i); j++; } return(retval); } int main() { int i, *j; pthread_t idxtid; pthread_attr_t attr; pthread_attr_init (&attr); pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED); j = (int *) calloc (1024, sizeof (int)); for (i = 0; i < 1024; i++) j[i] = i; rcode = pthread_create (&idxtid, &attr, genSimpleCurList, (void *)j); exit(0); } 

关于将数组作为参数传递,当然可以这样做。 如果将数组声明为,

 int a[3] = {1,2,2}; 

a就像是数组起始地址的标签。 因此, a代表指针。 *a等于a[0]*(a+1)等于a[1] 。 所以你可以将数组传递给线程,如下所示:

 pthread_create(&th,NULL,dosomething,(void *)a); 

在线程内部,您可以将aint *并用作数组。