线程的上下文切换

一.定义

  cpu保存上一次的任务状态,加载下一个任务这个过程为一次上下文切换。

二.线程上下文切换的原因

  1.正常时间片完了之后的正常调度。

  2.执行任务时遇到IO阻塞,挂起当前线程加载下一个线程。

  3.多个任务抢占锁资源,当前任务没有抢到锁资源,被调度器挂起,继续下一任务。

  4.用户代码挂起当前任务,让出CPU时间。

三.上下文切换次数查看

  在lunix系统中,使用vmstat命令来查看上下文切换的次数,cs表示切换次数,图中为89,每秒89次左右。

 

四.减少上下文切换

  1.无锁编程:

  2.CAS:原子类就是啦。

  3.协程:单线程里面实现调度多任务。

posted @ 2018-11-06 18:43  AJimmyFang  阅读(724)  评论(0)    收藏  举报