我一直试图弄清楚为什么我在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就像没有任何事情一样。
我们(我的整个工作团队)都不知道那里出了什么问题。
你提出的任何建议都会有所帮助,谢谢!!
答案 0 :(得分:0)
要刷新stdout
(由printf()
使用)后缀,每个"字符串"通过像这样的新行
printf("estoy esperando CPUs\n");
调试日志记录应使用stderr
转到fprintf(stderr, ...)
。 stderr
未被stdout
缓存。