【并发编程挑战】上下文切换

扫码关注公众号:Java 技术驿站

发送:vip
将链接复制到本浏览器,永久解锁本站全部文章

【公众号:Java 技术驿站】 【加作者微信交流技术,拉技术群】
> 文章首发于:[clawhub.club][] -------------------- 上下文切换(有时也称做进程切换或任务切换)是指 CPU 从一个进程或线程切换到另一个进程或线程。上下文切换会影响多线程执行速度。 #### 上下文定义 #### cpu发生进程或者线程切换时,所依赖的数据集合,比如一个函数有外部变量,函数运行时,必须获取外部变量,这些变量值的集合就是上下文。 #### 引发问题 #### 对于CPU密集型任务,多线程处理会发生上下文切换,会影响到执行速度,如果时IO密集型,多线程技术优点尽显。 #### 如何减少上下文切换 #### * 无锁并发编程,锁的获取与释放会发生上下文切换,多线程时会影响效率。无锁并发编程就是将数据分块,每个线程处理各自模块。比如LongAdder中部分代码。 * CAS算法,并发编程时通过CAS算法更新数据,而不必加锁。如Java的atomic包下的工具类。 * 使用最少线程,减少不必要的线程创建,自定义线程池。 * 使用协程,在单线程中维护多任务调度,处理任务间切换,Golang对于协程的使用貌似很强大。 [clawhub.club]: https://links.jianshu.com/go?to=https%3A%2F%2Fwww.clawhub.club ------- 来源:[https://www.jianshu.com/p/347ea7f881f8](https://www.jianshu.com/p/347ea7f881f8)
赞(0) 打赏
版权归原创作者所有,任何形式的转载请联系博主:daming_90:Java 技术驿站 » 【并发编程挑战】上下文切换

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏