我写了这段代码:

#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);

08-19 13:10