[英]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.