当前位置: 首页 > news >正文

解释什么是异步非阻塞?

在IO和网络编程中,我们经常看到几个概念:同步、异步、阻塞、非阻塞。

同步和异步
  同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发IO 操作并等待或者轮询的去查看IO 操作是否就绪,而异步是指用户进程触发IO 操作以后便开始做自己的事情,而当IO 操作已经完成的时候会得到IO 完成的通知。

阻塞和非阻塞
  阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方式,说白了是一种读取或者写入操作方法的实现方式,阻塞方式下读取或者写入函数将一直等待,而非阻塞方式下,读取或者写入方法会立即返回一个状态值。

理解方式
  乍一看这四个概念的解释会瞬间感到头大,也经常讲同步异步等同于阻塞非阻塞,其实,区分他们非常简单。

同步异步与阻塞非阻塞的主要区别是针对对象不同。

同步异步是针对调用者来说的,调用者发起一个请求后,一直干等被调用者的反馈就是同步,不必等去做别的事就是异步。

阻塞非阻塞是针对被调用者来说的,被调用者收到一个请求后,做完请求任务后才给出反馈就是阻塞,收到请求直接给出反馈再去做任务就是非阻塞。

在公交站等公交

对调用者-乘客而言:

1,一直干望着公交来的方向,就是同步。

2,不望着公交来的方向,掏出笔记本改bug,听公交站广播是否到车,就是异步。

对被动用者-公交系统而言:

1,公交站有广播的就是非阻塞的。

2,公交站没有广播的就是阻塞的。

很好的理解(来源):https://www.cnblogs.com/Rivend/p/12065474.html

http://www.lryc.cn/news/199203.html

相关文章:

  • 1024程序节特辑:一文读懂小程序支付流程
  • C- 使用原子变量实现信号量
  • Pytorch与Onnx的转换与推理
  • Linux权限详解
  • 基于react18+arco+zustand通用后台管理系统React18Admin
  • BAT031:按列表名单将路径a下的文件夹批量剪切到路径b
  • 随机专享记录第一话 -- RustDesk的自我搭建和使用
  • 【数据库】拼接字段 使用别名
  • Golang设计22种模式
  • MMKV(3)
  • vivado报错警告之[Vivado 12-1017] Problems encountered:
  • 基于springboot汽车租赁系统
  • C++禁用赋值操作符
  • 小程序的数据驱动和vue的双向绑定有何异同?
  • Nvm管理NodeJs版本
  • 阿里云国际站服务器开放端口详解!!
  • 【自动化测试入门】用Airtest - Selenium对Firefox进行自动化测试(0基础也能学会)
  • Python 爬虫入门:常见工具介绍
  • uniGUI文件操作
  • Python多进程之分享(multiprocessing包)
  • 【试题028】C语言关于逻辑与的短路例题
  • TSINGSEE烟火识别算法的技术原理是什么?如何应用在视频监控中?
  • 优雅而高效的JavaScript——?? 运算符、?. 运算符和 ?. .运算符
  • 【数之道 08】走进“卷积神经网络“,了解图像识别背后的原理
  • Stm32_标准库_期末设计_温度测量光照测量手机与芯片通信实现信息的更新
  • JavaScript 的类型和值
  • Kotlin Compose Multiplatform 跨平台开发实践之加入 iOS 支持
  • 【小黑嵌入式系统第四课】嵌入式系统硬件平台(二)——I/O设备、通信设备(UARTUSB蓝牙)、其他(电源时钟复位中断)
  • 报错:AttributeError: module ‘tensorflow‘ has no attribute ‘flags‘
  • Android--Retrofit2执行多个请求任务并行,任务结束后执行统一输出结果