一、

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相关推荐

  1. python并发处理同一个文件_python并发编程(并发与并行,同步和异步,阻塞与非阻塞)...

    最近在学python的网络编程,学会了socket通信,并利用socket实现了一个具有用户验证功能,可以上传下载文件.可以实现命令行功能,创建和删除文件夹,可以实现的断点续传等功能的FTP服务器.但 ...

  2. python网络编程基础(线程与进程、并行与并发、同步与异步、阻塞与非阻塞、CPU密集型与IO密集型)...

    python网络编程基础(线程与进程.并行与并发.同步与异步.阻塞与非阻塞.CPU密集型与IO密集型) 目录 线程与进程并行与并发同步与异步阻塞与非阻塞CPU密集型与IO密集型 线程与进程 进程 前言 ...

  3. 探究并发和并行、同步和异步、进程和线程、阻塞和非阻塞、响应和吞吐等

    一. 并发和并行 操作系统扫盲: 1. 对于单核cpu而言(不管单核单线程也好,单核多线程也罢),同一时间只能干一件事!!为了看起像可以"同时干多件事",windows操作系统把c ...

  4. 并发编程含义比较广泛,包含多线程编程、多进程编程及分布式程序等 目录 1. “共享内存系统”,消息传递系统”。 1 1.1. 共享模式 多进程 多线程 1 1.2. Actor消息模式 事件驱动 2

    并发编程含义比较广泛,包含多线程编程.多进程编程及分布式程序等 目录 1. "共享内存系统",消息传递系统". 1 1.1. 共享模式 多进程 多线程 1 1.2. Ac ...

  5. 并发、并行、串行、同步、异步、阻塞、非阻塞

    并发.并行.串行.同步.异步.阻塞.非阻塞 实际上同步与异步是针对应用程序与内核的交互而言的. 同步过程中进程触发IO操作并等待(也就是我们说的阻塞)或者轮询的去查看IO操作(也就是我们说的非阻塞)是 ...

  6. 那些年搞不懂的多线程、同步异步及阻塞和非阻塞(二)---概念区分

    概念解释: 同步/异步, 它们是消息的通知机制 同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回. 简单来说就是当前程序执行完才能执行后面的程序,程序执行时按照顺序执行, ...

  7. python 进程池阻塞和非阻塞_python 之 并发编程(进程池与线程池、同步异步阻塞非阻塞、线程queue)...

    9.11 进程池与线程池 池子使用来限制并发的任务数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务 池子内什么时候装进程:并发的任务属于计算密集型池子内什么时候装线程:并发的任务属于IO ...

  8. 【高并发编程】再谈同步、异步、阻塞、非阻塞

    同步.异步.阻塞.非阻塞的概念一直是计算机学科中很重要的概念,而这种细微的差别常常被大家混淆,我自己在过一段时间后也需要复习.今天再次翻出这个概念,仍然觉得不够清晰,今天再次深入了解了这四大天王. 以 ...

  9. 并发编程中的锁、条件变量和信号量

    在并发编程中,经常会涉及到锁.条件变量和信号量.本文从并发开始,探究为什么需要它们,它们的概念,实现原理以及应用. 并发简介 并发是指多个事情,在同一时间段内同时发生了.和并发经常一起被提到的是并行. ...

  10. 编程涉及到的同步、异步、阻塞和非阻塞对比简介

    简单点说: 阻塞就是干不完不准回来,一直处于等待中,直到事情处理完成才返回: 非阻塞就是你先干,我先看看有其他事没有,一发现事情被卡住,马上报告领导. 我们拿最常用的send和recv两个函数来说吧. ...

最新文章

  1. Matlab概率统计编程指南
  2. java 算法 排序算法_Java七种排序算法以及实现
  3. inxtrackup mysql_雪糕 的动态 - SegmentFault 思否
  4. 大数据WEB阶段(六)MySql 下载、安装、卸载与配置
  5. C++输入函数的应用
  6. 通讯可以并联吗_工业控制知识:吃透RS485通讯的连接方式,接485总线就简单多了...
  7. jquery与php数据传输,【网页制作-jquery, php】key-value 网页书签(php与js之间的数据传递)...
  8. MYSQL  GROUP BY 对多个字段进行分组
  9. 科学家对医疗预印本服务器的影响,美国化学学会将启动化学论文预印本服务
  10. Vue3 配置代理和使用全局axios请求数据
  11. dbms_lob.substr最大能截取多少?_【贱猫圈速6】同款车前驱和四驱,圈速到底差多少?...
  12. 大数据测试理论与方法
  13. android逆向基础教程一
  14. 黑客常见攻击方法与防护方法
  15. 不要在意别人的目光,走自己的路
  16. Qt报错 error: C1083
  17. 「萌新上手Mac」安装软件,步骤超简单
  18. C语言学生成绩信息管理系统课程设计报告
  19. IOS界面元素四栏(状态栏、导航栏、工具栏、TAB栏)设计规范
  20. 如何实现RS485串口通讯采集模拟量

热门文章

  1. 51单片机步进电机c语言程序,51单片机的步进电机c语言驱动程序
  2. html如何改成花体英文字体,花体英文在线转换
  3. 极速pdf android,极速PDF阅读器 V3.0.0.2003 官方版[安卓软件]
  4. somachine3.1安装包和安装方法
  5. 怎么制作自己的压缩软件
  6. nba篮球大师服务器维护,NBA篮球大师怎么进不去 NBA篮球大师黑屏闪退解决方法...
  7. 更改计算机图标大小得方法,更改图标大小【解决办法】
  8. Line in和Mic in的区别及使用
  9. Eclipse 中Alt+/快捷键失效的解决办法。
  10. 如何下载微信公众号里面的视频?