首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一根线什么时候死?

一根线什么时候死?
EN

Stack Overflow用户
提问于 2019-12-16 18:08:04
回答 1查看 276关注 0票数 0

作为一名CS专业的学生,我学习教科书中几乎所有的概念。

我知道,当线程死掉时,可能会出现糟糕的情况。

但是我想知道线程什么时候会死,

真实世界中什么时候会发生这种情况?

让我听听你的真实经历。

**当我读到一个问题时,我想出了一个问题:当一根线因握锁而意外死亡时,可能会发生一件不好的事情。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-16 18:17:28

当线程没有事情可做时,它就会死掉。在我见过的每个线程框架中,通过提供框架将在线程中调用一次的函数来告诉线程该做什么。

当该函数返回时(通过正常返回或抛出一个未指明的异常),这会告诉框架线程没有什么可做的了,因此框架会杀死线程。

在某些框架中,特别是在语言没有任何非本地退出机制(即异常)的情况下,该框架还将提供一个线程可以调用以显式杀死自己的函数。

我想知道线程何时会意外死掉

从库开发人员或OS开发人员的角度来看,这是不可能的。如果线程“意外”死亡,那么这将是库和/或操作系统中的一个严重缺陷。

您的代码可能意外地做了一些您不希望它做的事情。这也是一个缺陷,但缺陷是你的发现和修复。

  • 如果您的缺陷导致异常,那么框架可能只会扼杀一个线程,或者它可能会扼杀整个进程。它没有什么其他的功能:您不能指望库作者知道如何处理任意程序中的任意异常并从中恢复。
  • 如果您的缺陷导致硬件故障(例如,试图读取或写入无效的内存地址),则几乎相同。操作系统可能通过在线程中引发异常来响应(在这种情况下,请参见上文),或者它可能跳过它杀死线程或整个进程的部分。如果您的缺陷导致其他行为(例如死锁、无限循环、.),则
  • 。那么,除非您通过向进程发送信号等

进行干预,否则线程可能不会死。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59362112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档