我写了这段代码:
#include <stdio.h>
#include <pthread.h>
void* cuoco(void* arg)
{
fprintf(stderr,"Inizio codice cuoco\n");
fprintf(stderr,"Fine codice cuoco\n");
return NULL;
}
void* cameriere(void* arg)
{
fprintf(stderr,"Inizio codice cameriere\n");
fprintf(stderr,"Fine codice cameriere\n");
return NULL;
}
void* cliente(void* arg)
{
fprintf(stderr,"Inizio codice cliente\n");
fprintf(stderr,"Fine codice cliente\n");
return NULL;
}
int main(int argc, char* argv[])
{
void* (*routine)(void*);
void* result;
routine=cuoco;
pthread_t thread_cuoco,thread_cameriere,thread_cliente;
pthread_create(&thread_cuoco,NULL,routine,*argv);
return 0;
}
只是为了测试线程是如何工作的。但是函数cuoco的主体永远不会执行。这是因为它应该打印“nizio codice cuoco”和“fine codice cuoco”,但它不会。
最佳答案
您需要使用pthread_join
,以便main
函数在终止程序之前等待线程执行。
pthread_create(&thread_cuoco,NULL,routine,*argv);
int res = pthread_join(thread_cuoco, NULL);