1

我们知道我们这样调用 pthread

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, 
                    void *(*start_routine) (void *), void* arg);

但是,如果start_routine我要调用的函数中有多个参数,我该怎么办?

4

1 回答 1

4

你可以将任何你想要的东西放入一个结构中并传递一个指向它的指针。

在 C 中:

typedef struct {
  int a;
  int b;
} ChildMainArgs;

void child_main(int a,int b);

void child_main_thread(void *arg)
{
  ChildMainArgs *args_ptr = (ChildMainArgs *)arg;
  child_main(args_ptr->a,args_ptr->b);
}

ChildMainArgs args;
args.a = 5;
args.b = 7;
pthread_create(..,..,child_main_thread,&args);
于 2012-10-02T04:27:24.443 回答