因此可以说你在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',则它们退出。 –