从王者荣耀与女朋友,看懂“并发”与“上下文切换”

330 阅读2分钟

​首先我们要知道 并发并行 的区别,

  • 并行 才是真正的同时发生 —— 比如,你一边打王者荣耀一边泡脚;

  • 并发 只是 逻辑上的并行 ,充分利用时间碎片去处理多件事 —— 比如,你一边打王者荣耀一边和女朋友聊天,只有在 死亡回城 时间你才可能会 切出去 回复一下女友的消息。对于你的女友,她觉得你一直在和她聊天;对于你的队友,他们觉得你一直在和他们一起打游戏。也就是说,表面上看起来像是同时发生的,而这个切出去切回来的过程,就是 上下文切换

  • 上下文切换开销 ,显然,由于团战或者多哄女朋友两句,导致切出和切入的时间造成延迟,你的女友可能会埋怨你在忙什么心不在焉,你的队友可能会投诉你挂机行为,这就是上下文切换带来的成本,即 上下文切换开销 !这也是Redis那么快的原因之一,单线程作战,没有切换开销​。

  • 调度算法 ,另外,你可能特别害怕女友生气,又不想挂机,所以你总是保持打一会儿游戏就切出去回两句,不一定非要等到死亡或回城;你也可能不怎么害怕女友生气,不死不回城就不切出去回复女朋友(我想这样的人最后都成了单身吧,,,),上述两种处理方式,分别对应着UNIX系统与Windows系统的CPU竞争策略 —— 时间片调度抢占式调度 ,,,

下面让我们用一个视频来看懂 并发上下文切换 《一个视频看懂“并发”与“上下文切换”》


往期推荐