pthread运行多次

时间:2015-11-17 15:58:15

标签: c pthreads

我希望我的每个线程都调用多个函数。我怎样才能做到这一点?现在我有线程代码只调用一个函数:

pthread_attr_init(&attributes);
if((tid1 = pthread_create(&thread[0],&attributes,produce,NULL)))
{
    printf("\nError in the producer thread\n");
    printf("\n");
}

if((tid2 = pthread_create(&thread[1],&attributes,consume,NULL)))
{
    printf("\nERror in the consumer thread\n");
}

pthread_join(thread[0],NULL);
pthread_join(thread[1],NULL);

调用pthread_create会产生两个新线程吗?

1 个答案:

答案 0 :(得分:1)

你无法通过" pthread_create()的多个功能。对此没有任何规定。但是,您可以在线程函数中调用所需的任何函数,就像任何其他函数调用一样。

void *produce(void *arg)
{
   func1();
   func2();
   ...
}

void *consume(void *arg)
{
   funcx();
   funcy();
   ...
}

int main(void) 
{
...

if((tid1 = pthread_create(&thread[0],&attributes,produce,NULL)))
{
    printf("\nError in the producer thread\n");
    printf("\n");
}

if((tid2 = pthread_create(&thread[1],&attributes,consume,NULL)))
{
    printf("\nERror in the consumer thread\n");
}
...
}

或者如果您想要的是每个(例如示例中的func1func2)函数的单独线程是单独的线程,那么您只需要调用pthread_create() as多次将这些函数作为参数(即线程函数)。