分离线程与加入所需线程并从 main() 调用 pthread_exit(),这两种情况下对资源和内存的影响

问题描述 投票:0回答:1

我对 C 编程相当陌生,目前正在尝试更广泛地了解 pthreads 库和线程。

问题1: 何时以及为什么分离线程是一个不错的选择。我读过的很多东西似乎都说,当您希望线程独立于主线程而存在时,分离线程是有益的。对我来说,这似乎意味着主线程无论出于何种原因通常寿命较短。我想知道为什么在我们希望看到加入的线程上调用 pthreads_join ,然后使用 pthread_exit() 退出 main 不会更简单,我相信它会退出 main 而不会杀死进程(通过一些我认为不会杀死进程的黑暗魔法)影响从 main 传递到相关线程的任何数据或资源),这将有效地实现与分离线程相同的效果(?)。

问题2: 在 pthread_detach 和 main 调用 pthread_exit 场景中,如果这些线程中的一个或另一个完成,是否会对资源或内存产生影响?如果没有,那么又有什么好处呢?似乎除非运行大量线程(接近系统限制),否则对于一个短暂的程序来说并不值得这么麻烦,因为您只会回收一个潜在的轻量级进程来运行(假设堆和其他资源仍然存在)不受影响,以免从另一个线程以某种方式调用它们)。

为任何帮助干杯。

c linux multithreading multiprocessing pthreads
1个回答
0
投票

Q1:有时您有一个执行无限循环的辅助线程,并且没有好方法告诉该线程整个进程即将退出,因此它应该停止。 如果主线程调用

exit
,或者从
main
返回,则辅助线程将被突然终止,但是如果

© www.soinside.com 2019 - 2024. All rights reserved.