• BIO 和NIO、AIO的区别


    一、基本概念

    BIO:   Block input output 同步阻塞io:

    服务器实现模式为一个连接建立一个线程,即客户端有连接请求时,服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情,会造成不必要的线程开销,可以通过线程池机制改善

    NIO :non-blocking input output 同步非阻塞io:

    服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器(Selector)上,多路复用器论询到连接有IO请求时才启动一个线程进行处理

    AIO:Asynchronous input output  异步非阻塞io:

    二、BIO 和NIO两者的区别

    首先NIO 非阻塞,当selecter 检测到有请求时采取调用线程去读取数据,而BIO的则是一直阻塞在哪里等待请求,其次NIO 节省线程,用过的线程如果执行完任务可以被调度去执行其他任务,一个线程处理多条任务,提升线程使用率。也降低了线程资源的浪费。

    三、NIO和AIO的区别

    异步与同步的区别,AIO的读写操作都是异步操作,读写的过程还可以干其他事,当读写完毕后会按照回调函数的方式通知业务函数继续下一步操作。所以AIO 适合于连接数目多且连接比较长的场景,读写耗时的场景。而NIO则适合连接数目多且连接比较短的操作。

  • 相关阅读:
    python生成试题库和界面 (python generate test database and layout)
    python生成数据库(python generate database)
    Go语言基础之流程控制
    Go语言基础之运算符
    Go语言基础之变量和常量
    VS Code配置Go语言开发环境
    Linux安装教程|详细
    安装Go语言及搭建Go语言开发环境
    Go语言
    Django2.0路由匹配path的用法
  • 原文地址:https://www.cnblogs.com/lufei33180/p/13946137.html
Copyright © 2020-2023  润新知