同步、异步、阻塞、非阻塞
同步、异步、阻塞、非阻塞
同步、异步、阻塞、非阻塞一、概念介绍
1、同步
是一个服务的完成需要依赖其他服务时,只有等待被依赖的服务完成后,依赖的服务才能算完成,这是一种可靠的服务序列。
2、异步
是一个服务的完成需要依赖其他服务时,只通知其他依赖服务开始执行,而不需要等待被依赖的服务完成,此时该服务就算完成了。至于被依赖的服务最终是否真正完成,无法确定,所以它是不可靠的服务序列。
3、阻塞
阻塞调用是指调用结果返回之前,当前线程会被挂起,一直处于等待消息通知,不能够执行其他业务。函数只有在得到结果之后才会返回。
4、非阻塞
非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。
虽然表面上看非阻塞的方式可以明显的提高CPU的利用率,但是也带了另外一种后果就是系统的线程切换增加。
二、调用者获取依赖服务异步回调结果的方式
1、一种是主动去轮训查询异步回调的结果。
2、一种调用依赖服务时传入一个callback方法或者回调地址,依赖服务完成之后去调用callback通知调用者。
三、同步与异步消息通知方式
1、同步:当一个同步调用发出后,调用者要一直等待返回消息(或者调用结果)通知后,才能进行后续的执行。
2、异步:当一个异步过程调用发出后,调用者不能立刻得到返回消息(结果)。实际处理这个调用的部件在完成后,通过消息回调来通知调用者是否调用成功。
四、阻塞调用和同步调用的不同
对于同步调用来说,很多时候当前线程可能还是激活的,只是从逻辑上当前函数没有返回而已,此时,这个线程可能也会处理其他的消息。
五、同步非阻塞
如果这个线程在等待当前函数返回时,仍在执行其他消息处理,那这种情况就叫做同步非阻塞
六、同步阻塞
如果这个线程在等待当前函数返回时,没有执行其他消息处理,而是处于挂起等待状态,那这种情况就叫做同步阻塞
- ucenter安装配置(使用ucenter实现多站点同步登录的讲解)
- sqlserver存储过程同步数据(SQL Server存储过程同时返回分页结果集和总数)
- mysql主从同步失败原因(mysql 主从复制如何跳过报错)
- python线程池如何实现同步(Python mutiprocessing多线程池pool操作示例)
- dedecms有哪些功能(dedecms 二次开发之审核时间同步更新)
- python多线程多种方法(详解python多线程之间的同步一)
- python实现sql脚本规范(基于Python的SQL Server数据库实现对象同步轻量级)
- linux多线程怎么设置(超详细讲解Linux C++多线程同步的方式)
- mysql主从同步复制原理(MYSQL数据库GTID实现主从复制实现超级方便)
- docker进入mysql查看路径(Docker 环境运行 Mysql 和开启 Binlog 配置主从同步的设置方法)
- mysql缓存和redis查询效率(浅谈MySQL与redis缓存的同步方案)
- mysql主从同步原理详解(MySQL双主主主架构配置方案)
- python协程使用教程(对Python协程之异步同步的区别详解)
- 怎样在云服务器上搭建宝塔面板(利用宝塔面板同步服务器时间的实现方法)
- sqlserver数据库实时同步(SQL Server实时同步更新远程数据库遇到的问题小结)
- linux时间同步ubuntu(在Ubuntu中使用NTP实现时间同步)
- ()
- 对你思念入骨的女人,跟你见面时会有这几种表现,藏都藏不住(对你思念入骨的女人)
- 纳兰性德绝美作,一场重逢,成就最后一首称得上惊艳的《如梦令》(纳兰性德绝美作)
- 如何快速赚钱(如何快速赚钱方法真实有效)
- 这里输入关键词(如何输入关键词)
- 熊猫中国国宝(熊猫国宝酒53酱香)
热门推荐
- python线程池如何实现同步(Python mutiprocessing多线程池pool操作示例)
- sqlserver百分比数据查询时间(SQL Server统计信息更新时采样百分比对数据预估准确性的影响详解)
- ftp服务器的搭建及应用(FTP服务器的部署和维护心得)
- 未能加载文件或程序集 解决办法
- nginx负载均衡器的作用(Nginx 负载均衡是什么以及该如何配置)
- phpredis存储对象(PHP使用redis位图bitMap 实现签到功能)
- vs代码折叠
- docker的解剖(再见 Docker如何5分钟转型 containerd)
- .Net中Immutable(不可变)集合
- 使用Visual Studio对项目进行远程调试