[英]C POSIX thread (pthead) pthread_create() does not work after calling pthread_join()
[英]C pthread join an ended thread
我正在构建通过FIFO进行通信的2个程序(客户端/服务器)。 两个程序都有线程。 当客户端的线程结束时,它不会加入,并且主要挂起。
该计划执行以下操作:
服务器:
客户:
服务器运行良好,所有线程都相应地连接。
客户端在步骤5中失败。使用
pthread_join(&reader,NULL);
永远挂起主力。 我已经检查过,线程已经结束了。
运用
pthread_tryjoin_np(&reader,NULL);
我明白了
错误码= 16
strerror给出了
设备或资源繁忙
创建线程:
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_JOINABLE);
pthread_create(&reader,&attr,trataResp,NULL);
或者使用:pthread_create(&reader,NULL,trataResp,NULL);
不会产生任何变化。
我该如何解决这个问题?
那么pthread_join接收线程id,而不是它的地址。 这一行:
pthread_join(&reader,NULL);
应该:
pthread_join(reader,NULL);
如果reader
被声明为pthread_t
。
希望这不仅仅是你问题中的拼写错误,这实际上有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.