pthread_create传给执行函数的变量能不能有多个?

 所属目录:Java   |   类型:技术问答   |   时间:2007-05-21
 问题:

pthread_create中第3个参数是执行函数的入口地址,第4个参数是传给执行函数的变量,请问传给执行函数的变量能不能有多个,传多个变量应该要怎么做?

· 网友精彩回答:

发表者:yyy790601

自己写个函数把原来的封装进去啊。可以定义多个变量,可加入自己的调试方式等等,然后按要求返回。  
  不过忘了linux最多支持多少个参数了。

发表者:newbiestar

兄弟,void*干什么你不会不知道吧?  
   
  你创建一个void*[],里面保存指向你的所有参数的指针,然后把这个void*[]传递给pthread_create就可以了么……  
   
  多少个参数还不是随便你?给你个例子  
   
  #include   <pthread.h>  
   
  void*   route(void*   args)  
  {  
                  int*   iptr   =   ((void**)args)[0];  
                  float*   fptr   =   ((void**)args)[1];  
                  char*   str   =   ((void**)args)[2];  
                  printf("integer:   %d\nfloat:   %f\nstring:   %s\n",   *iptr,   *fptr,   str);  
                  return   0;  
  }  
   
  int   main(void)  
  {  
                  pthread_t   thr_id;  
                  int   ival   =   1;  
                  float   fval   =   10.0f;  
                  char   buf[]   =   "func";  
                  void*   arg[3]={&ival,   &fval,   buf};  
                  pthread_create(&thr_id,   null,   route,   arg);  
                  sleep(1);  
  }  
 

发表者:onlyf

传结构就好了。

.
处理 SSI 文件时出错
© 2006-2008 All Rights Reserved