并发编程之上下文详解

阅读: 评论:0

并发编程之上下文详解

并发编程之上下文详解

并发编程的一些概念

我们知道并发和并行两者表示的含义是不同的:
  • 并发:线程间竞争资源,同时只能执行一个
  • 并行:线程间不竞争资源,同时可以执行多个,线程互不干扰。

有些小伙伴可以不知道什么时候会用到多线程,我们只要记得一句话:当处于cpu浪费或者是需求需要时,适用多线程

上下文切换

即使是单核处理器也支持多线程执行代码,cpu通过给每个线程分配cpu时间片来实现这个机制(时间片是cpu分配各个线程的时间):当前任务执行一个时间片后会切换到下一个任务。但是,在切换前会保存上一个任务的状态,以便下次切换回这个任务时,可以再加载出这个任务的状态。 所以任务从保存到再加载的过程就是一次上下文切换(大约1ms)。总之,当多线程竞争锁时,就会引起上下文切换。
所以如何减少上下文切换?
- 无锁并发编程:当多线程处理数据时,可以用一些办法来 避免使用锁
- CAS算法:Java的Atomic包使用CAS算法来更新数据,而不需要加锁。
- 使用最小线程:避免创建不需要的线程。
- 协程:在单线程里实现多任务的调度,并在单线程里维持多个任务间的切换。

本文发布于:2024-02-01 10:51:16,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170675587836100.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:下文   详解
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23