并发编程、并行、多线程、锁、同步、异步、多线程、单线程、阻塞io、非阻塞io
一、
cpu的每一个核在同一时间下,只能执行一个线程,就是单核同一时间只能执行一个线程
而cpu可以不停的切换,这样就导致用户感觉可以执行多个线程,这是并发,而不是并行
并发和并行
你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。
你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。
你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。
并发的关键是你有处理多个任务的能力,不一定要同时。并行的关键是你有同时处理多个任务的能力。
进程和线程
进程就是一个运行的程序,其中一个进程有单独的资源和内存空间,而线程是在进程中的执行单元,其中一个进程可以
多线程在操作同一个资源的时候,就会出现问题,所以就出现锁的问题,线程安全,线程不安全都是围绕这个话题来讲的,其中mysql的操作也是围绕这个来的
多线程和非阻塞的区别
IO操作其实可以分成两个步骤,请求IO操作和执行IO操作。
一般的IO调用过程是这样的:发起IO操作的请求,执行IO操作,得到IO操作的结果,将结果返回给IO操作请求。
阻塞和非阻塞:侧重点是在响应方的策略
阻塞:就是处理完用户的请求之后进行响应数据
非阻塞:就是在不管有没有处理完数据,都立刻给用户响应,这里是响应,而不是主动通知,这个响应式发送方不断的轮询的
同步和异步:侧重点是在发送方的策略
同步是在发送方发送请求后一直等待响应方的响应,
异步是在发送方发送请求之后不管有没有响应,就不管理,而是等待响应方主动给发送方通知
同步/异步关注的是消息通知的机制,而阻塞/非阻塞关注的是程序(线程)等待消息通知时的状态。
dubbo就是用了nio+rpc协议的的原理
Nginx高并发的原理:使用了多路复用和多进程(单线程)的原理来实现高并发的
4 小明的故事#
对上面所讲的概念再次进行一个场景梳理,上面已经明确说明,同步/异步关注的是消息通知的机制,而阻塞/非阻塞关注的是程序(线程)等待消息通知时的状态。以小明下载文件打个比方,从这两个关注点来再次说明这两组概念,希望能够更好的促进大家的理解。
同步阻塞:小明一直盯着下载进度条,到 100% 的时候就完成。
同步体现在:等待下载完成通知;
阻塞体现在:等待下载完成通知过程中,不能做其他任务处理;
同步非阻塞:小明提交下载任务后就去干别的,每过一段时间就去瞄一眼进度条,看到 100% 就完成。
同步体现在:等待下载完成通知;
非阻塞体现在:等待下载完成通知过程中,去干别的任务了,只是时不时会瞄一眼进度条;【小明必须要在两个任务间切换,关注下载进度】
异步阻塞:小明换了个有下载完成通知功能的软件,下载完成就“叮”一声。不过小明仍然一直等待“叮”的声音(看起来很傻,不是吗)。
异步体现在:下载完成“叮”一声通知;
阻塞体现在:等待下载完成“叮”一声通知过程中,不能做其他任务处理;
异步非阻塞:仍然是那个会“叮”一声的下载软件,小明提交下载任务后就去干别的,听到“叮”的一声就知道完成了。
异步体现在:下载完成“叮”一声通知;
非阻塞体现在:等待下载完成“叮”一声通知过程中,去干别的任务了,只需要接收“叮”声通知即可;【软件处理下载任务,小明处理其他任务,不需关注进度,只需接收软件“叮”声通知,即可】
也就是说,同步/异步是“下载完成消息”通知的方式(机制),而阻塞/非阻塞则是在等待“下载完成消息”通知过程中的状态(能不能干其他任务),在不同的场景下,同步/异步、阻塞/非阻塞的四种组合都有应用。
---------------------
作者:调皮的玩代码
来源:CSDN
原文:https://blog.csdn.net/weily11/article/details/80309007
版权声明:本文为博主原创文章,转载请附上博文链接!
并发编程、并行、多线程、锁、同步、异步、多线程、单线程、阻塞io、非阻塞io相关推荐
- python并发处理同一个文件_python并发编程(并发与并行,同步和异步,阻塞与非阻塞)...
最近在学python的网络编程,学会了socket通信,并利用socket实现了一个具有用户验证功能,可以上传下载文件.可以实现命令行功能,创建和删除文件夹,可以实现的断点续传等功能的FTP服务器.但 ...
- python网络编程基础(线程与进程、并行与并发、同步与异步、阻塞与非阻塞、CPU密集型与IO密集型)...
python网络编程基础(线程与进程.并行与并发.同步与异步.阻塞与非阻塞.CPU密集型与IO密集型) 目录 线程与进程并行与并发同步与异步阻塞与非阻塞CPU密集型与IO密集型 线程与进程 进程 前言 ...
- 探究并发和并行、同步和异步、进程和线程、阻塞和非阻塞、响应和吞吐等
一. 并发和并行 操作系统扫盲: 1. 对于单核cpu而言(不管单核单线程也好,单核多线程也罢),同一时间只能干一件事!!为了看起像可以"同时干多件事",windows操作系统把c ...
- 并发编程含义比较广泛,包含多线程编程、多进程编程及分布式程序等 目录 1. “共享内存系统”,消息传递系统”。 1 1.1. 共享模式 多进程 多线程 1 1.2. Actor消息模式 事件驱动 2
并发编程含义比较广泛,包含多线程编程.多进程编程及分布式程序等 目录 1. "共享内存系统",消息传递系统". 1 1.1. 共享模式 多进程 多线程 1 1.2. Ac ...
- 并发、并行、串行、同步、异步、阻塞、非阻塞
并发.并行.串行.同步.异步.阻塞.非阻塞 实际上同步与异步是针对应用程序与内核的交互而言的. 同步过程中进程触发IO操作并等待(也就是我们说的阻塞)或者轮询的去查看IO操作(也就是我们说的非阻塞)是 ...
- 那些年搞不懂的多线程、同步异步及阻塞和非阻塞(二)---概念区分
概念解释: 同步/异步, 它们是消息的通知机制 同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回. 简单来说就是当前程序执行完才能执行后面的程序,程序执行时按照顺序执行, ...
- python 进程池阻塞和非阻塞_python 之 并发编程(进程池与线程池、同步异步阻塞非阻塞、线程queue)...
9.11 进程池与线程池 池子使用来限制并发的任务数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务 池子内什么时候装进程:并发的任务属于计算密集型池子内什么时候装线程:并发的任务属于IO ...
- 【高并发编程】再谈同步、异步、阻塞、非阻塞
同步.异步.阻塞.非阻塞的概念一直是计算机学科中很重要的概念,而这种细微的差别常常被大家混淆,我自己在过一段时间后也需要复习.今天再次翻出这个概念,仍然觉得不够清晰,今天再次深入了解了这四大天王. 以 ...
- 并发编程中的锁、条件变量和信号量
在并发编程中,经常会涉及到锁.条件变量和信号量.本文从并发开始,探究为什么需要它们,它们的概念,实现原理以及应用. 并发简介 并发是指多个事情,在同一时间段内同时发生了.和并发经常一起被提到的是并行. ...
- 编程涉及到的同步、异步、阻塞和非阻塞对比简介
简单点说: 阻塞就是干不完不准回来,一直处于等待中,直到事情处理完成才返回: 非阻塞就是你先干,我先看看有其他事没有,一发现事情被卡住,马上报告领导. 我们拿最常用的send和recv两个函数来说吧. ...
最新文章
- Matlab概率统计编程指南
- java 算法 排序算法_Java七种排序算法以及实现
- inxtrackup mysql_雪糕 的动态 - SegmentFault 思否
- 大数据WEB阶段(六)MySql 下载、安装、卸载与配置
- C++输入函数的应用
- 通讯可以并联吗_工业控制知识:吃透RS485通讯的连接方式,接485总线就简单多了...
- jquery与php数据传输,【网页制作-jquery, php】key-value 网页书签(php与js之间的数据传递)...
- MYSQL GROUP BY 对多个字段进行分组
- 科学家对医疗预印本服务器的影响,美国化学学会将启动化学论文预印本服务
- Vue3 配置代理和使用全局axios请求数据
- dbms_lob.substr最大能截取多少?_【贱猫圈速6】同款车前驱和四驱,圈速到底差多少?...
- 大数据测试理论与方法
- android逆向基础教程一
- 黑客常见攻击方法与防护方法
- 不要在意别人的目光,走自己的路
- Qt报错 error: C1083
- 「萌新上手Mac」安装软件,步骤超简单
- C语言学生成绩信息管理系统课程设计报告
- IOS界面元素四栏(状态栏、导航栏、工具栏、TAB栏)设计规范
- 如何实现RS485串口通讯采集模拟量
热门文章
- 51单片机步进电机c语言程序,51单片机的步进电机c语言驱动程序
- html如何改成花体英文字体,花体英文在线转换
- 极速pdf android,极速PDF阅读器 V3.0.0.2003 官方版[安卓软件]
- somachine3.1安装包和安装方法
- 怎么制作自己的压缩软件
- nba篮球大师服务器维护,NBA篮球大师怎么进不去 NBA篮球大师黑屏闪退解决方法...
- 更改计算机图标大小得方法,更改图标大小【解决办法】
- Line in和Mic in的区别及使用
- Eclipse 中Alt+/快捷键失效的解决办法。
- 如何下载微信公众号里面的视频?