美文网首页
同步、异步、阻塞、非阻塞与IO模型

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

作者: superyn | 来源:发表于2018-05-03 10:43 被阅读0次

1 举个简单的栗子:假如你今天去银行办理业务,排队的人还真不少

--同步非阻塞 在等待的时候你可以打电话发短信(非阻塞),同时还要自己不断观察排队情况(同步轮询)
--同步阻塞 在等待的时候你什么也不能干(阻塞),唯一能做的只有不停观察排队情况(同步轮询)
--异步非阻塞 不需要多余的等待,自助出号机上领个排队号然后想干嘛干嘛去(非阻塞),当轮到你的时候柜台服务人员大喇叭或电话通知轮到你了快来办理(异步)

总结:同步与异步是基于服务端是否先立刻返回等完全执行完再回调通知还是一直等到执行完才返回结果,阻塞非阻塞是基于客户端是否一直在等待。

2 IO模型
--同步阻塞 进程执行io(socket)操作的时候阻塞直到内核返回数据
--同步非阻塞 进程执行io(socket)操作的时候如果执行未完成则内核返回错误不阻塞请求进程,同时会不断轮询请求操作完成与否
--异步阻塞(io多路复用) select监听所有socket并不知道哪个socket有事件需要轮询后再操作,epoll监听socket返回有事件的socket文件描述符;select会先阻塞请求进程,有请求操作事件发生后再去执行。实际中使用观察者设计模式会注册感兴趣的事件,而不是所有事件都需要。
--异步非阻塞io 进程执行io(socket)操作的时候内核直接先返回,进程可以做其他任何其他操作不阻塞;内核执行完成相关操作通知进程操作完成。需要操作系统支持用的较少。

总结:nginx高性能服务器则是基于多进程+IO多路复用模型epoll模型实现高并发。
web服务主要是io密集型服务;那么事件驱动更适合于I/O密集型服务,多进程或线程适合于CPU密集型服务(当然python的多线程有全局锁除外。。ß)。

相关文章

  • UNIX 的5种IO模型介绍

    IO模型同步、异步、阻塞、非阻塞socket阻塞与非阻塞,同步与异步 同步和异步 同步/异步主要针对C端-同步就像...

  • 阻塞非阻塞 同步异步 IO模型及其应用 NIO实现原理

    1.同步异步概念 2.阻塞非阻塞概念 3.常见I/O模型:同步阻塞IO,同步非阻塞IO,异步阻塞IO,异步非阻塞I...

  • I/O模型

    一般来说I/O模型可以分为:同步阻塞,同步非阻塞,异步阻塞,异步非阻塞IO 同步阻塞IO:在此种方式下,用户进程在...

  • 产品开发

    IO复用模型同步,异步,阻塞,非阻塞及实例详解 IO复用模型同步,异步,阻塞,非阻塞及实例详解数据库中间件 MyC...

  • IO模型

    原文参考链接 四种状态 同步 异步 阻塞 非阻塞 IO分类 同步阻塞IO 同步非阻塞IO 异步非阻塞IO注意: 没...

  • 网络编程之IO模型与Epoll

    一、IO模型 区分同步&异步,阻塞&非阻塞 区分同步或异步(synchronous/asynchronous)。简...

  • 分布式理论架构设计

    IO模型 BIO 同步阻塞 NIO 同步非阻塞 AIO 异步非阻塞 NIO核心组件 Selector Channe...

  • BIO NIO AIO

    BIO:同步阻塞IONIO:同步非阻塞IOAIO:异步非阻塞IO先弄清楚同步、异步,阻塞、非阻塞概念。 io操作分...

  • Netty基础-JAVA IO模型

    java - IO模型 BIO NIO AIO 同步与异步,阻塞与非阻塞 同步与异步是面向多个线程协作的情况。 假...

  • Java Socket IO演进(一)-BIO/NIO/AIO

    1. 概览 Java中主要有三种IO模型,分别是同步阻塞IO(BIO)、同步非阻塞IO(NIO)、异步非阻塞IO(...

网友评论

      本文标题:同步、异步、阻塞、非阻塞与IO模型

      本文链接:https://www.haomeiwen.com/subject/funglftx.html