因此可以說你在main(線程1)中創建一個線程。該線程從文件中獲取一些輸入,並創建多個其他線程(線程2 ...等)來處理某些內容。在退出線程1之前是否必須退出其他線程(線程2 ...)?如果是這樣,我將如何去等待線程1產生的所有線程完成?在離開啓動它的線程之前,您是否必須等待子線程完成?
-2
A
回答
0
不,您不必等待其他線程退出,在大多數情況下。整個線程的重點是啓動一個子進程,它主要獨立於啓動它的線程。
如果您不在乎線程何時退出,您通常應該分離線程。否則,它會假設你關心它的退出狀態,並且它會坐在那裏佔用資源 - 即使退出後 - 直到某個其他線程加入它以檢索退出狀態。
+0
好的,謝謝你,我剛剛瞭解到創建多個進程,現在我正在學習線程,所以我對我的任務有點困惑。 – Doug
1
線程間沒有父/子關係。線程都是同伴。線程啓動另一個線程並沒有什麼區別,所有線程都是包含它們的進程的相同部分。
有關調用從main
pthread_exit
特殊規則僅適用於因爲main
返回終止過程。其他線程沒有這種擔心 - 他們只能通過調用exit
或類似的函數來終止進程。
請注意,您應該要麼加入或分離每個線程。你可以分離你的所有線程,然後你不必擔心加入它們 - 它們只會運行完成,然後自行清理。
相關問題
- 1. Android線程:是否需要等待線程在「加入」之前啓動?
- 2. 正在啓動線程並等待它們全部完成
- 3. Java多線程等待線程完成
- 4. AJAX線程 - 如何等待它完成?
- 5. 等待UI線程完成
- 6. 等待線程完成python
- 7. Java等待線程完成
- 8. 如何在Java中啓動更多之前等待一個線程完成
- 9. 啓動多個線程,爲什麼你必須等待?
- 10. 爲什麼主線程在繼續之前等待另一個線程完成?
- 11. 未來等待FixedThreadPool在所有線程完成之前返回
- 12. 等待FileSystemWatcher事件在完成線程之前觸發
- 13. 如何使父線程等待子線程完成 - C#
- 14. 如何讓主線程等待所有子線程完成?
- 15. 如何等待線程在另一個線程以Java/Android啓動之前完成?
- 16. 使主程序等待線程完成
- 17. 如何等待一個線程完成Windows註銷之前
- 18. jquery在離開函數之前等待動畫完成
- 19. .NET應用程序在終止程序之前是否等待所有前景線程完成?
- 20. 會在子線程完成執行之前退出主線程?
- 21. 等待分離的線程來完成在C++
- 22. 如果主線程完成,是否必須指示匿名線程退出?
- 23. Java - 在當前線程完成時啓動線程
- 24. cron作業是否會啓動新的線程或等待現有的線程完成?
- 25. 等待Java中的線程完成
- 26. 若要完成線程的等待(Android)
- 27. 在移動到新路線之前等待子元素的動畫完成
- 28. java:爲什麼主線等待子線程完成
- 29. 如何使線程等到另一個線程完成啓動
- 30. 等待線程完成執行上
https://computing.llnl.gov/tutorials/pthreads/ –
「通過讓main()顯式調用pthread_exit()作爲最後一件事情,main()會阻塞並保持活動狀態以支持它的線程。直到完成爲止。「這對於其他不是主要的線程適用嗎?所以如果我在線程1的末尾有pthread_exit(),它會等待其他線程? – Doug
@mashedtatoes如果應用於其他線程,則不一致。其他線程*不能從'main'返回,也不能在其他線程中阻塞'main'。所以這沒有任何意義。如果其他線程調用'pthread_exit',則它們退出。 –