私たちはこのようにpthreadを呼び出すことを知っています
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void* arg);
ただし、start_routine
呼び出したい関数に複数の引数がある場合、どうすればよいですか?
私たちはこのようにpthreadを呼び出すことを知っています
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void* arg);
ただし、start_routine
呼び出したい関数に複数の引数がある場合、どうすればよいですか?
必要なものを構造体に入れて、それにポインタを渡すことができます。
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);