`
leobluewing
  • 浏览: 240948 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

同步异步,阻塞非阻塞,好文章(转)

 
阅读更多
老张爱喝茶,废话不说,煮开水。
出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。
1 老张把水壶放到火上,立等水开。(同步阻塞)
老张觉得自己有点傻
2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)
老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪音。
3 老张把响水壶放到火上,立等水开。(异步阻塞)
老张觉得这样傻等意义不大
4 老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去拿壶。(异步非阻塞)
老张觉得自己聪明了。


所谓同步异步,只是对于水壶而言。
普通水壶,同步;响水壶,异步。
虽然都能干活,但响水壶可以在自己完工之后,提示老张水开了。这是普通水壶所不能及的。
同步只能让调用者去轮询自己(情况2中),造成老张效率的低下。

所谓阻塞非阻塞,仅仅对于老张而言。
立等的老张,阻塞;看电视的老张,非阻塞。
情况1和情况3中老张就是阻塞的,媳妇喊他都不知道。虽然3中响水壶是异步的,可对于立等的老张没有太大的意义。所以一般异步是配合非阻塞使用的,这样才能发挥异步的效用。

——来源网络,作者不明。
分享到:
评论

相关推荐

    IO中同步、异步与阻塞、非阻塞的区别

    在软件开发领域,尤其是在涉及输入输出(IO)操作时,理解同步与异步、阻塞与非阻塞的概念是非常重要的。这些概念对于设计和实现高效的程序至关重要,尤其是在高并发和分布式系统中。 一、同步与异步 同步和异步是...

    同步与异步IO、阻塞与非阻塞IO

    同步与异步、阻塞与非阻塞是计算机科学中关于I/O操作的两种关键概念,它们描述的是程序处理输入/输出(IO)时的不同方式。 同步与异步主要涉及的是程序等待IO操作完成的方式。同步IO指的是在发出IO请求后,程序会...

    DELPHI SOCKET 阻塞通讯

    如果是实时性要求较高的系统,或者希望提高并发性能,那么非阻塞和异步模式可能是更好的选择。而对于那些对响应时间要求不那么严格,且不希望处理复杂的并发问题的简单应用,阻塞模式则足够使用。 总的来说,...

    异步redis + java源码

    异步Redis通信模式主要利用非阻塞I/O(Non-blocking I/O)来提高应用性能,特别是处理大量并发请求时。这种模式下,客户端并不等待服务器的响应,而是立即返回并继续执行其他任务,当服务器完成操作并准备返回结果时...

    Windows Socket五种I/O模型——代码全攻略

    本篇文章将深入探讨Windows Socket的五种I/O模型,包括同步阻塞、同步非阻塞、异步非阻塞(即I/O重叠)、多路复用(select/poll)以及完成端口(IOCP)模型。这些模型各有优缺点,适应不同的应用场景。 首先,我们...

    异步I/O处理

    异步I/O处理的关键在于非阻塞和事件驱动。非阻塞I/O意味着即使没有数据可读,读取操作也不会挂起;事件驱动则是通过事件回调机制,当某个I/O操作完成时,系统会通知相应的处理函数。这种模型非常适合网络服务、...

    异步Socket的Tcp通讯服务器

    异步Socket,也称为非阻塞Socket,是相对于同步Socket(阻塞Socket)的一种实现方式。在同步模式下,Socket操作会阻塞当前线程,直到操作完成。然而,异步模式下,当Socket操作被触发时,不会立即返回结果,而是通知...

    两种高性能IO设计模式(ReactorProactor)的比较

    常见的I/O设计模式有阻塞型、非阻塞同步型和非阻塞异步型。其中,非阻塞异步型I/O设计模式是性能最高、伸缩性最好的。文章将探讨两种高性能I/O设计模式:Reactor和Proactor,并比较Java、C#和C++对这些设计模式的...

    java源码:异步IO框架 Cindy.rar

    与传统的同步I/O模式不同,异步I/O不会在等待数据读写完成时阻塞线程,而是通过回调或者Future机制通知用户数据已经准备好。这种方式极大地提高了并发处理能力,特别适用于高并发的网络服务,如Web服务器、数据库...

    78程序员练级攻略(2018):异步IO模型和lock-Free编程1

    Reactor模式是处理大量并发连接的关键,它通过事件驱动的方式实现了非阻塞I/O,Understanding Reactor Pattern系列文章是深入理解这一模式的好资源。 Lock-Free编程是另一个关键领域,特别是在高并发和高性能系统中...

    异步timer的软件源码

    在VB编程中,异步计时器是一种非阻塞式计时机制,它允许程序在等待特定时间间隔的同时执行其他任务,提高了程序的效率和响应性。 在VB源码中,`mTimer.cls`很可能是一个自定义的类模块,用于封装异步计时器的功能。...

    Jeffrey Richter 大师名作 异步编程模型实现

    TAP 允许开发者以同步代码的风格编写异步操作,提高了代码的可读性和可维护性。 3. **异步I/O**:操作系统提供的异步I/O接口,如 Windows 的 IOCP (I/O 完成端口) 或 Unix 的 aio,允许程序在I/O操作准备就绪时得到...

    tongbu.rar_c# 数据同步_synchronization_数据同步

    6. **Monitor.TryEnter** 和 `lock` 的 `try` 版本:提供非阻塞的同步尝试,如果资源已被占用,会立即返回。 7. **async/await 和 Task**:在异步编程中,可以使用 TaskCompletionSource 和 CancellationToken 来...

    node-async-sync:同步和异步过程的示例

    Node.js以其事件驱动、非阻塞I/O模型而著名,这使得它在处理大量并发请求时表现出色。本篇文章将深入探讨"node-async-sync"主题,提供关于同步和异步过程的实例,并解释如何在Node.js中正确使用它们。 ### 同步编程...

    01-VIP-BIO,NIO,AIO精讲1

    接着是NIO,即同步非阻塞IO。NIO的核心在于使用了多路复用器(如Java中的Selector),它允许单个线程处理多个连接。客户端的连接请求被注册到Selector上,Selector通过轮询检测哪个连接有IO事件发生,然后进行相应的...

    07.aiohttp多任务异步协程1

    通过异步协程,我们可以并发地执行多个任务,而无需等待每个任务的完成,从而实现了非阻塞的I/O操作,这对于处理大量网络请求的场景尤其有用。在实际开发中,尤其是在Web服务和爬虫等应用中,使用aiohttp可以显著...

    C#网络编程初探(PDF格式)

    ### C#网络编程初探知识点解析 #### 一、引言 C#作为一种现代的面向对象编程...同时,理解同步、异步、阻塞与非阻塞的概念对于优化网络应用程序的性能至关重要。希望本文能够帮助读者更好地掌握C#网络编程的核心技术。

    httpx+async实现python 发起异步http请求

    Python的`asyncio`库提供了一个事件循环,可以管理多个协程(coroutine),从而实现非阻塞的I/O操作。`httpx`的异步API正是利用了`asyncio`,使得我们能够在等待HTTP响应的同时执行其他任务。 下面是一个简单的`...

    将类似NSURLConnection的同步任务引入NSURLSession

    而NSURLSession,尤其是它的异步数据任务,可以在后台线程运行,不会阻塞用户界面,提供更好的性能和响应性。 然而,有些场景下我们仍然需要使用同步请求,比如在初始化时加载必要的数据或者在后台线程处理大量数据...

Global site tag (gtag.js) - Google Analytics