linux 等待子线程退出,等待一组子线程退出的问题__线程_pthread_join_终止_pthread_detach_释放__169IT.COM...
請問
Windows下的函數(shù)?WaitForMultipleObjects()----等待一組線程的函數(shù)
在Linux下如何實現(xiàn)呢?
--------------------------------------
最好貼點代碼,謝謝諸位了
|
linux?中沒有類似的接口,?但可以使用?pthread_detach?函數(shù),讓線程退出時,自己釋放資源。
線程終止的同步及其返回值
一般情況下,進程中各個線程的運行都是相互獨立的,線程的終止并不會通知,也不會影響其他線程,終止的線程所占用的資源也并不會隨著線程的終止而得到釋放。正如進程之間可以用wait()系統(tǒng)調(diào)用來同步終止并釋放資源一樣,線程之間也有類似機制,那就是pthread_join()函數(shù)。
void?pthread_exit(void?*retval)
int?pthread_join(pthread_t?th,?void?**thread_return)
int?pthread_detach(pthread_t?th)
pthread_join()的調(diào)用者將掛起并等待th線程終止,retval是pthread_exit()調(diào)用者線程(線程ID為th)的返回值,如果thread_return不為NULL,則*thread_return=retval。需要注意的是一個線程僅允許唯一的一個線程使用?pthread_join()等待它的終止,并且被等待的線程應(yīng)該處于可join狀態(tài),即非DETACHED狀態(tài)。
如果進程中的某個線程執(zhí)行了pthread_detach(th),則th線程將處于DETACHED狀態(tài),這使得th線程在結(jié)束運行時自行釋放所占用的內(nèi)存資源,同時也無法由pthread_join()同步,pthread_detach()執(zhí)行之后,對th請求pthread_join()將返回錯誤。
一個可join的線程所占用的內(nèi)存僅當有線程對其執(zhí)行了pthread_join()后才會釋放,因此為了避免內(nèi)存泄漏,所有線程的終止,要么已設(shè)為DETACHED,要么就需要使用pthread_join()來回收。
|
再過幾天就學到線程了。。。
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的linux 等待子线程退出,等待一组子线程退出的问题__线程_pthread_join_终止_pthread_detach_释放__169IT.COM...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux杀dmol3进程,linux下
- 下一篇: linux编译两个整数相加,常考面试题之