首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么linux内核不支持线程内部的协同呢?

为什么linux内核不支持线程内部的协同呢?
EN

Stack Overflow用户
提问于 2013-12-30 10:42:26
回答 1查看 853关注 0票数 2

大多数现代语言都支持协同机制来实现并发。它们通常将它们的协同线称为一条重量轻的线,只需很少的脚印就可以生成数万条。既然“线程太重”,为什么linux内核不直接在线程内部支持协同,而不让编程语言/ VM支持它呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-30 11:34:19

线程之所以被认为是重量级的,正是因为它们是在内核中实现的。每个上下文从一个线程切换到另一个线程需要与内核进行交互。这就是为什么现代语言(如Go)在用户空间中创建共同例程,并将它们调度到运行时系统中的OS线程上。

这种混合设置允许进一步简化。例如,协同例程可以执行协作多任务处理,只有在遇到阻塞操作(如语言所定义的)时,才会屈服于调度程序。当内部调度程序使用多个线程运行其共同例程时,它们仍将使用多个内核,而不打扰内核调度数万个线程,并跟踪哪些线程被阻塞。

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

https://stackoverflow.com/questions/20837889

复制
相关文章

相似问题

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