Pthreads:对具有多个参数的函数的线程调用



我有两个函数要使用从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和request[]向量呢?我曾想过使用一个结构,但提供给我的函数有上面显示的两个参数。是否可以使用pthreads将多个参数传递给具有多个参数的函数?

将指针传递到结构是解决此问题的方法。如果您无法修改当前函数以接收作为此指针的单个参数,则需要创建一个进行转换的填充函数。考虑:

void shim(struct x *arg)
{
    request_resources(arg->customer_num, arg->request);
}

并指定CCD_ 1作为线程的入口点。

最新更新