iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >同步异步,阻塞非阻塞
  • 732
分享到

同步异步,阻塞非阻塞

2023-06-03 13:06:34 732人浏览 八月长安
摘要

众所周知javascript的执行环境是单线程的,当有多任务时,先执行前面的任务再按顺序狮子那个后面一个,如果前面一个任务耗时很长,那么多所有任务都将拖延,比如经常遇到的浏览器无响应其实就是因为某一段JavaScript代码长时间运行(死循

众所周知javascript的执行环境是单线程的,当有多任务时,先执行前面的任务再按顺序狮子那个后面一个,如果前面一个任务耗时很长,那么多所有任务都将拖延,比如经常遇到的浏览器无响应其实就是因为某一段JavaScript代码长时间运行(死循环),导致其他任务无法执行,整个页面无法继续加载造成的,这就是阻塞

为了解决单线程阻塞问题,就出现一种异步编程,典型的异步编程就例如:Node.Js 

同步和异步实际上关注的是消息通信机制

  • 所谓同步,就是发出一个调用时,没有得到结果就不返回

  • 所谓异步,就是发布一个调用后,立刻返回,被调用者通过状态通知来告诉调用者,或者通过回调函数处理

阻塞与非阻塞实际上关注的是程序在等待调用结果时的状态,可能是消息,可能是返回值

  • 所谓阻塞,就是指调用结果返回前,当前线程会被挂起,调用线程只有在得到结果之后才会返回

  • 所谓非阻塞,是指在不能立刻得到结果前,该调用不会阻塞当前线程

这时候,或许对同步异步,阻塞非阻塞有了一个概念,那如果,我们将它们互相组合起来呢?

  • 同步阻塞,老王用烧水壶烧开水,等水开了然后炒菜

  • 同步非阻塞,老王用烧水壶烧开水,然后去炒菜,隔一段时间看一下水烧开了没

  • 异步阻塞,老王买了个烧开了水回响的烧水壶,然后等着水烧开了去炒菜

  • 异步非阻塞,老王用那个会响的烧水壶烧水,然后去炒菜,等水壶响了再去拿水壶

同步阻塞是最原始最笨的办法,他要一直等着水烧开了。同步非阻塞其实是用到了轮询、io复用、协程等方法,每隔一段时间去看一下是不是烧开了。异步阻塞是个很“叛逆”的问题,一般很少用到,但是还是有这种情况的。异步非阻塞,那就是用到了回调函数和通知方式。

大胆推测,异步最终会变成某种形式或者状态的同步,也就是消息或者回调,消息是进程间的通信,回调本身就是一种同步,只是采取了快响应,慢处理的策略,推后了同步的时间

--结束END--

本文标题: 同步异步,阻塞非阻塞

本文链接: https://www.lsjlt.com/news/234440.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 同步异步,阻塞非阻塞
    众所周知JavaScript的执行环境是单线程的,当有多任务时,先执行前面的任务再按顺序狮子那个后面一个,如果前面一个任务耗时很长,那么多所有任务都将拖延,比如经常遇到的浏览器无响应其实就是因为某一段JavaScript代码长时间运行(死循...
    99+
    2023-06-03
  • 同步、异步与阻塞、非阻塞
    1. 同步与异步   同步和异步关注的是消息通信机制。同步就是在发出一个【调用】时,在没有拿到结果之前,该【调用】就不返回,但是一旦调用返回,就得到返回值了。   换句话说,就是由【调用者】主动等待这个【调用】的结果。     而异步正好...
    99+
    2023-01-31
  • 一篇文章理解阻塞、非阻塞、同步、异步
    目录理解阻塞、非阻塞、同步、异步阻塞非阻塞同步异步总结理解阻塞、非阻塞、同步、异步 首先说明,这些都是在特点场景下或者相对情况的词汇,OK,接下来开门见山。 阻塞 可以很直观的理解,...
    99+
    2024-04-02
  • java 中同步、异步、阻塞和非阻塞区别详解
    java 中同步、异步、阻塞和非阻塞区别详解简单点说:阻塞就是干不完不准回来,一直处于等待中,直到事情处理完成才返回; 非阻塞就是你先干,我先看看有其他事没有,一发现事情被卡住,马上报告领导。我们拿最常用的send和recv两个函数来说吧....
    99+
    2023-05-31
    java 同步 异步
  • Python中的同步异步阻塞与非阻塞是什么
    今天小编给大家分享一下Python中的同步异步阻塞与非阻塞是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、状态介绍在...
    99+
    2023-07-05
  • 对于同步、异步、阻塞、非阻塞的几点浅薄理
    首先我们先来看看: 一、同步与异步同步/异步, 它们是消息的通知机制(都是通过状态、通知、回调函数来返回结果)1. 概念解释    同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。 (按照这个定义,其实绝大多数...
    99+
    2023-01-30
    几点 浅薄
  • 什么是异步非阻塞redis
    异步非阻塞redis又叫异步IO,在IO多路复用模型中,事件循环将文件句柄的状态事件通知给用户线程,由用户线程自行读取数据、处理数据。而在异步IO模型中,当用户线程收到通知时,数据已被内核读取并存储于用户线程指定的缓冲区内,内核在IO完成后...
    99+
    2024-04-02
  • python3--IO模型,阻塞,非阻塞,多路复用,异步,selectors模块
    协程回顾协程 实际上是一个线程执行了多个任务,遇到IO就切换示例:import time import gevent def func():     print('...
    99+
    2023-01-30
    多路 复用 模块
  • 如何在python中实现异步非阻塞
    这篇文章给大家介绍如何在python中实现异步非阻塞,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、说明当一个异步过程调用发出后,调用者不会立刻得到结果。实际处理这个调用的部件是在调用发出后,通过状态、通知来通知调用...
    99+
    2023-06-15
  • 非阻塞同步怎么在Java中应用
    非阻塞同步怎么在Java中应用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、从硬件原语上理解同步(非特指Java)同步机制是多处理机系统的重要组成部分,其实现方式除了关系到...
    99+
    2023-06-15
  • Nodejs中的非阻塞异步IO是什么
    这篇文章主要讲解了“Nodejs中的非阻塞异步IO是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Nodejs中的非阻塞异步IO是什么”吧!我们以网络请求IO为例,首先介绍服务端处理一次...
    99+
    2023-07-04
  • 浅谈Java非阻塞同步机制和CAS
    目录什么是非阻塞同步悲观锁和乐观锁CAS什么是非阻塞同步 非阻塞同步的意思是多个线程在竞争相同的数据时候不会发生阻塞,从而能够在更加细粒度的维度上进行协调,从而极大的减少线程调度的开...
    99+
    2024-04-02
  • Python异步之非阻塞流如何使用
    1. 异步流asyncio 的一个主要好处是能够使用非阻塞流。Asyncio 提供非阻塞 I/O 套接字编程。这是通过流提供的。可以打开提供对流写入器和流写入器的访问的套接字。在合适的时候,使用协同程序可以从流中写入和读取数据并暂停。完成后...
    99+
    2023-05-21
    Python
  • socket阻塞和非阻塞怎么设置
    在使用socket进行网络通信时,可以设置socket为阻塞或非阻塞模式。阻塞模式下,当执行socket的读取和写入操作时,如果没有...
    99+
    2023-09-16
    socket
  • 【JAVA基础】- 同步非阻塞模式NIO详解
    【JAVA基础】- 同步非阻塞模式NIO详解 文章目录 【JAVA基础】- 同步非阻塞模式NIO详解一、概述二、常用概念三、NIO的实现原理四、NIO代码实现客户端实现服务端实现 ...
    99+
    2023-09-03
    java nio
  • 带你了解Nodejs中的非阻塞异步IO
    以上就是带你了解Nodejs中的非阻塞异步IO的详细内容,更多请关注编程网其它相关文章!...
    99+
    2023-05-14
    I/O模型 node
  • Java异步非阻塞编程的方式有哪些
    这篇文章主要讲解了“Java异步非阻塞编程的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java异步非阻塞编程的方式有哪些”吧!1 服务端执行,最简单的同步调用方式:缺陷:服务端...
    99+
    2023-06-20
  • Node.js 流的艺术:掌握非阻塞异步编程
    ...
    99+
    2024-04-02
  • Go并发编程:异步编程与非阻塞IO
    在 go 中,异步编程和非阻塞 io 可用于并发编程。异步编程使用轻量级 goroutine 在后台执行任务,而主程序可继续执行。非阻塞 io 使用 io.reader 接口进行输入/输...
    99+
    2024-05-11
    go 并发编程 git go语言
  • Python 异步之非阻塞流使用示例详解
    目录1. 异步流2. 如何打开连接3. 如何启动服务器4. 如何使用 StreamWriter 写入数据5. 如何使用 StreamReader 读取数据6. 如何关闭连接1. 异步...
    99+
    2023-03-22
    Python 异步非阻塞流 Python 异步
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作