首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >虚拟线程如何映射到实际线程

虚拟线程如何映射到实际线程
EN

Stack Overflow用户
提问于 2022-01-04 10:30:34
回答 1查看 380关注 0票数 1

正如所写的,虚拟线程最终被映射到实际的线程。假设有100万个虚拟线程被创建。在一个8核心处理器中,我假设会有8个内核线程。所以,我的问题是

  1. 如何将100万个虚拟线程映射到8个内核线程?这背后的算法是什么?
  2. 为什么阻塞在虚拟线程中很便宜?据我所知,这是因为它没有阻塞运营商(内核)线程。但是内核线程使用上下文切换,那么为什么它仍然很便宜呢?
  3. 是一个非常适合于代码需要调用本机方法(公共本机字符串
  4. )的用例。
EN

回答 1

Stack Overflow用户

发布于 2022-01-04 11:05:42

虚拟线程和内核线程的

  1. 映射是由线程模型完成的。有3种可用的线程模型:

代码语言:javascript
运行
复制
1. many to one

  1. one to one

  1. 多到多

本质上,线程库保持用户线程/虚拟线程到内核线程之间的映射。

  1. 用户线程的阻塞很容易,因为内核线程所需要做的就是将用户线程的状态保存在内核线程或进程本身中,并获取另一个用户线程。另一方面,如果需要切换内核线程,则需要将大量寄存器解压缩并存储在内存中。这个过程很昂贵。

此外,创建内核线程需要创建一个完整的线程控制块,以便内核能够管理这些线程。这一过程再次缓慢。

  1. 您总是在用户线程级别工作。因此,您所做的任何调用都需要在用户线程本身上。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70577333

复制
相关文章

相似问题

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