pthread_create具有两个变量的传递函数

时间:2018-12-14 04:37:07

标签: c pthreads

有人可以帮我知道是否可以向用于发送1>..\Code.asm(91): error A2071: initializer magnitude too large for specified size 1>..\Code.asm(91): error A2098: invalid operand for OFFSET 1>..\Code.asm(112): error A2098: invalid operand for OFFSET 的函数发送两个不同的变量吗?

pthread_create

是否可能具有这样的功能

void *handler(void *parameter){
    //some code
    return 0;
}

如果可能的话,如何与void *handler(void *parameter, void *parameter2){ //some code return 0; } 一起使用? 预先感谢。

2 个答案:

答案 0 :(得分:2)

不。 start_routine的{​​{1}}应该是pthread_create形式的函数。

这是void *(*) (void *)的原型。

pthread_create
  

创建线程时以int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); 作为其唯一参数执行start_routine

如果要向arg函数发送多个参数,则可以通过使handler指向包含这些参数的结构的指针来实现。

例如,您可以执行以下操作:

arg

现在,您可以使用struct Params{ int i; char c; }; struct Params* pParams; 代替void* arg

答案 1 :(得分:1)

用作(void*)pParams创建的线程的起点的函数必须接受单个pthread_create作为参数并返回void *。 / p>

您需要使用变量创建一个结构,然后将其传递给指针。

void *