什么是线程的上下文切换?

首先了解时间片:时间片是CPU分配给各个程序执行的时间,每个线程都会被分配给一个时间段,成为它的时间片(就是该进程允许运行的时间)。

上下文切换:CPU通过分配时间片来执行任务,当一个任务的时间片用完了,那么就会被切换到另一个任务。在切换之前会保存上一个任务的状态(就是这个任务的上下文),当下次再切到这个任务继续执行的时候,就会加载这个状态。

作用(假并行):宏观上我们可以同时打开多个应用程序,每个程序同时运行。微观上因为只有一个CPU,一次只能处理程序要求的一部分,如何公平的处理各个任务的执行,一种方法就是引入时间片,每个程序轮流执行。

这就像我们同时读两本书,当我们在读一本英文的技术书籍时,发现某个单词不认识, 于是便打开中英文词典,但是在放下英文书籍之前,大脑必须先记住这本书读到了多少页的第多少行,等查完单词之后,能够继续读这本书。这样的切换是会影响读 书效率的,同样上下文切换也会影响多线程的执行速度

posted @ 2022-03-07 16:13  QZ-CMD  阅读(322)  评论(0编辑  收藏  举报