gpt4 book ai didi

multithreading - 同一进程中的线程有多独立?

转载 作者:行者123 更新时间:2023-12-04 06:52:14 29 4
gpt4 key购买 nike

现在,这可能是一个非常新手的问题,但我并没有真正的多线程编程经验,而且我还没有完全理解线程与进程相比如何工作。

当我的机器上的一个进程挂起时,比如说它正在等待一些永远不会到来的 IO 或类似的东西,我可以杀死它并重新启动它,因为其他进程不受影响并且可以,例如,仍然操作我的终端。当然,这是非常明显的。

我不确定进程内的线程是否相同:如果一个线程挂起,其他线程是否不受影响?换句话说,我可以运行一个监督其他线程的“看门狗”线程,例如杀死并重新创建挂起的线程吗?例如,如果我有一个线程池,我不想被偶尔的挂断所耗尽。

最佳答案

线程是独立的,但是进程和线程之间是有区别的,那就是在进程的情况下,操作系统不仅仅是“杀死”它。它还会在之后进行清理。

如果您开始终止似乎已挂起的线程,很可能会使资源处于锁定状态和类似情况,如果您对进程执行相同操作,操作系统会为您关闭。

因此,例如,如果您打开一个文件进行写入,并开始生成数据并将其写入文件,而这个线程现在挂起,无论出于何种原因,终止该线程将使文件仍然打开,并且很可能被锁定, 直到您关闭整个程序。

所以你的问题的真正答案是:不,你不能用困难的方式杀死线程。

如果您只是要求一个线程关闭,那是不同的,因为线程仍然处于控制之中并且可以在终止之前清理和关闭资源,但是调用诸如“KillThread”或类似的 API 函数是不好的。

关于multithreading - 同一进程中的线程有多独立?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/469092/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com