Pthread没有执行功能

时间:2016-05-25 04:28:58

标签: c multithreading pthreads posix

我一直试图弄清楚为什么我在C中创建的线程使用pthread库没有执行pthread_create收到的函数。

以下是代码:

    void* escucharCPUs (void* arg){
     t_Escucha* cpu= (t_Escucha*) arg; 
     listen(cpu->servidor,cpu->cantConexiones);
     printf("estoy esperando CPUs");
     t_CPU* newCPU=malloc(sizeof(t_CPU));
     while(1){
      int cliente2 = recibirCliente(cpu->servidor);
      printf("Recibí una conexión en %d!!\n", cliente2);
      inicializarCPU(newCPU);
      list_add(listaCPUs,newCPU);
     }
    }
    //This is the function that pthread_create recieves.

    typedef struct{
     int servidor;
     int cantConexiones;
    }t_Escucha;

    //This one above is an auxiliar function for networking, I put it as extra info.

    //THIS GOES INSIDE THE MAIN
    t_Escucha* CPU;
    CPU=malloc(sizeof(t_Escucha));

    //And, here is the thread creation
    pthread_t hiloEscuchaCPUs;
    pthread_attr_init(&atributo);
    pthread_attr_setdetachstate(&atributo,PTHREAD_CREATE_DETACHED);
    t2=pthread_create(&hiloEscuchaCPUs,&atributo,escucharCPUs,(void*)CPU);
    //Is inside the main too

结果是,pthread_create就像没有任何事情一样。

我们(我的整个工作团队)都不知道那里出了什么问题。

你提出的任何建议都会有所帮助,谢谢!!

1 个答案:

答案 0 :(得分:0)

要刷新stdout(由printf()使用)后缀,每个"字符串"通过像这样的新行

   printf("estoy esperando CPUs\n");

调试日志记录应使用stderr转到fprintf(stderr, ...)stderr未被stdout缓存。