一.定义
cpu保存上一次的任务状态,加载下一个任务这个过程为一次上下文切换。
二.线程上下文切换的原因
1.正常时间片完了之后的正常调度。
2.执行任务时遇到IO阻塞,挂起当前线程加载下一个线程。
3.多个任务抢占锁资源,当前任务没有抢到锁资源,被调度器挂起,继续下一任务。
4.用户代码挂起当前任务,让出CPU时间。
三.上下文切换次数查看
在lunix系统中,使用vmstat命令来查看上下文切换的次数,cs表示切换次数,图中为89,每秒89次左右。
四.减少上下文切换
1.无锁编程:
2.CAS:原子类就是啦。
3.协程:单线程里面实现调度多任务。