首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在操作系统中,谁负责取消线程?

在操作系统中,谁负责取消线程?
EN

Stack Overflow用户
提问于 2016-05-24 21:14:37
回答 2查看 203关注 0票数 0

在多线程环境中,线程可以通过两种方式之一取消:通过异步取消延迟取消。由于我在一本参考教科书中读到,在多线程的两级模型中,用户线程库负责线程调度,我想知道是谁负责操作系统中的线程取消?

它也是用户线程库吗?

这听起来不像一个非常聪明的想法,因为图书馆可以很好地做它想做的事情,这似乎是一个巨大的设计缺陷对我。(您可能会以无法杀死的线程擦除整个磁盘!)

会不会是操作系统本身?

然后,操作系统可能甚至不知道线程(例如,在多对一模型中),因此它最终将无法识别这样的线程。

无论如何,任何开悟都是值得感激的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-24 21:27:54

答案取决于线程是如何实现的。如果像您建议的那样,线程是通过用户库创建的,那么终止进程就会杀死线程。根据操作系统的不同,库可能能够实现线程的清理(而不是突然死亡)。

如果线程是在操作系统内核中实现的,操作系统必须处理线程终止。

票数 1
EN

Stack Overflow用户

发布于 2016-05-24 21:23:47

“线程擦拭您的硬盘”是一个没有问题。用户模式线程可以完成与主线程一样多的任务。此外,操作系统通常可以杀死整个用户进程,而不关心其内部细节,因此如果这些细节涉及用户模式线程,则无关紧要。

当然,当操作系统负责进程中的线程时,它必须在删除进程之前停止这些线程。显然,操作系统不能再调度这些线程了,因为它们的代码会随着停止的进程的地址空间而消失。

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

https://stackoverflow.com/questions/37424032

复制
相关文章

相似问题

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