Pthreads:线程调用多参数函数
Pthreads: Thread calls to functions with multiple parameters
我有两个函数要使用从 pthread 创建的线程调用 API:
int request_resources(int customer_num, int request[]);
int release_resources(int customer_num, int release[]);
我对如何实现这一点感到困惑。我以为你只能通过以下方式将一个参数传递给函数:
pthread_create(thread,attr,start_routine,arg)
有人要求我创建多个线程,然后让它们将随机值传递给请求和释放函数,但我如何传递 customer_num 和请求[] 向量?我想过使用一个结构,但我提供的函数有上面显示的两个参数。是否可以使用 pthreads 将多个参数传递给具有多个参数的函数?
将指针传递给结构是解决此问题的方法。如果您无法修改当前函数以接收单个参数(即 this 指针),则需要创建一个 shim 函数来执行转换。考虑:
void shim(struct x *arg)
{
request_resources(arg->customer_num, arg->request);
}
并指定 shim
作为线程的入口点。
我有两个函数要使用从 pthread 创建的线程调用 API:
int request_resources(int customer_num, int request[]);
int release_resources(int customer_num, int release[]);
我对如何实现这一点感到困惑。我以为你只能通过以下方式将一个参数传递给函数:
pthread_create(thread,attr,start_routine,arg)
有人要求我创建多个线程,然后让它们将随机值传递给请求和释放函数,但我如何传递 customer_num 和请求[] 向量?我想过使用一个结构,但我提供的函数有上面显示的两个参数。是否可以使用 pthreads 将多个参数传递给具有多个参数的函数?
将指针传递给结构是解决此问题的方法。如果您无法修改当前函数以接收单个参数(即 this 指针),则需要创建一个 shim 函数来执行转换。考虑:
void shim(struct x *arg)
{
request_resources(arg->customer_num, arg->request);
}
并指定 shim
作为线程的入口点。