我希望我的每个线程都调用多个函数。我怎样才能做到这一点?现在我有线程代码只调用一个函数:
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会产生两个新线程吗?
答案 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");
}
...
}
或者如果您想要的是每个(例如示例中的func1
和func2
)函数的单独线程是单独的线程,那么您只需要调用pthread_create()
as多次将这些函数作为参数(即线程函数)。