什么是线程的上下文切换?
首先了解时间片:时间片是CPU分配给各个程序执行的时间,每个线程都会被分配给一个时间段,成为它的时间片(就是该进程允许运行的时间)。
上下文切换:CPU通过分配时间片来执行任务,当一个任务的时间片用完了,那么就会被切换到另一个任务。在切换之前会保存上一个任务的状态(就是这个任务的上下文),当下次再切到这个任务继续执行的时候,就会加载这个状态。
作用(假并行):宏观上我们可以同时打开多个应用程序,每个程序同时运行。微观上因为只有一个CPU,一次只能处理程序要求的一部分,如何公平的处理各个任务的执行,一种方法就是引入时间片,每个程序轮流执行。
这就像我们同时读两本书,当我们在读一本英文的技术书籍时,发现某个单词不认识, 于是便打开中英文词典,但是在放下英文书籍之前,大脑必须先记住这本书读到了多少页的第多少行,等查完单词之后,能够继续读这本书。这样的切换是会影响读 书效率的,同样上下文切换也会影响多线程的执行速度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现