1.上下文切换
CPU通过给线程分配CPU时间片来实现多线程执行的,也就是时间片轮转机制,CPU分配给每个线程的时间片非常短,所以我们才会感觉多个线程是同事执行的。
CPU在执行执行完一个时间片后会切换到下一个任务,切换之前会保存上一个任务的状态,以便下次切换回这个任务的时候可以加载到这个任务的状态,所以任务从保存到在加载的过程就是一次上下文切换。
2.上下文切换对多线程执行的影响
因为线程有创建和上下文切换,所以多线程执行并不一定比单线程快。如果说并发量在百万次的操作串行执行会比并发线程速度快。
3.如何减少上下文的切换
- 无锁并发编程
每个线程对应一个内存队列里的操作 - CAS算法
- 使用最少线程和使用协程
尽量在单线程内实现多个任务的执行