线程体未执行

Ram*_*uri 0 c linux pthreads

我写了这段代码:

#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;
}
Run Code Online (Sandbox Code Playgroud)

只是为了测试线程是如何工作的.但是cuoco函数的主体永远不会执行.因为它应该打印"Inizio codice cuoco"和"fine codice cuoco",但事实并非如此.

Cha*_*via 8

您需要使用pthread_join,以便您的main函数在终止程序之前等待线程执行.

pthread_create(&thread_cuoco,NULL,routine,*argv);

int res = pthread_join(thread_cuoco, NULL);
Run Code Online (Sandbox Code Playgroud)