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