我写了这段代码:
#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",但事实并非如此.
您需要使用pthread_join,以便您的main函数在终止程序之前等待线程执行.
pthread_create(&thread_cuoco,NULL,routine,*argv);
int res = pthread_join(thread_cuoco, NULL);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |