IO多路复用 基于IO的单线程并发 协程

一. IO多路复用

检测多个socket是否已经发生变化(是否已经连接成功/是否已经获取数据)(可读/可写)

操作系统检测socket是否发生变化,有三种模式:

select:最多1024个socket;循环去检测.

poll:不限制监听socket个数;循环去检测(水平触发).

epoll:不限制监听socket个数;回调方式(边缘触发).

Python模块:

select.select

select.epoll

二.基于IO多路复用+socket实现并发请求

IO多路复用+socket非阻塞+捕获异常(BlockingIOError)

此方法称为基于事件循环实现的异步非阻塞框架(非阻塞:不等待 异步:执行完某个人物后自动调用我给他的函数.)

python中开源模块 Twisted

三.协程.

1.什么是协程

协程也可以称为”微线程”,就是开发者控制线程执行流程,控制先执行某段代码然后再切换到另外函数执行代码…来回切换.

2.协程可以提高并发吗

协程自己本身无法实现并发,但协程+IO切换性能可以提高.

3.单线程提高并发:

协程+IO切换:gevent

基于事件循环的异步非阻塞框架:Twisted

4.手动实现协程:yield关键字生成器

Original: https://www.cnblogs.com/fengff/p/13647183.html
Author: 枫飞飞
Title: IO多路复用 基于IO的单线程并发 协程

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/540058/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 笑话一则

    在遥远的希艾斯星球爪哇国塞沃城中,两名年轻的程序员正在为一件事情苦恼,程序出问题了,一时看不出问题出在哪里,于是有了以下对话: “Debug一下吧。” &#…

    Java 2023年6月5日
    084
  • 22.1.22 并查集和KMP算法

    22.1.22 并查集和KMP算法 1.并查集结构 1)实现: 并查集有多种实现方式,例如向上指的图的方式,数组的方式等等。其根本思想就在于准确记录某个节点的根节点,这个这种记录就…

    Java 2023年6月13日
    074
  • 分享一例同一系统里不同服务之间通信的设计方案

    优付系统结构如下。一个数据库之上,有商户接口(RestAPI)、运营后台(OMS)、商户门户这3个独立SSM应用,三者有各自不同的功能处理逻辑。 现在呢,要做一个补偿工具。当付款单…

    Java 2023年6月15日
    071
  • Java异常处理

    异常处理 编程错误可以分成三类:语法错误、逻辑错误和运行错误。 语法错误(也称编译错误)是在编译过程中出现的错误,由编译器检查发现语法错误。 逻辑错误指程序的执行结果与预期不符,可…

    Java 2023年6月9日
    070
  • CDN下nginx获取用户真实IP地址

    随着nginx的迅速崛起,越来越多公司将apache更换成nginx. 同时也越来越多人使用nginx作为负载均衡, 并且代理前面可能还加上了CDN加速,但是随之也遇到一个问题:n…

    Java 2023年5月30日
    0148
  • Linux安装RabbitMQ教程(文件下载地址+安装命令+ 端口开放 + 用户创建 +配置文件模板+端口修改)

    前言 1.安装RabbitMQ前需先安&…

    Java 2023年6月16日
    071
  • 堆排序算法剖析

    1.将待排序列以一个完全二叉树存储,设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层所有的结点都连续集中在最左边,这就是完全二叉树。 2…

    Java 2023年6月16日
    0110
  • mybatis报错:java.io.IOException: Could not find resource /resources/mybatis-config.xml

    原因:这个图标的resources目录是根目录,在此目录下的文件直接写文件名即可 Original: https://www.cnblogs.com/CounterX/p/1645…

    Java 2023年6月9日
    099
  • JavaWeb环境配置

    Tomcat 在系统环境中添加:CATALINA_BASE == D:\tomcat8 ; CATALINA_HOME == D:\tomcat8 ;配置好后在path环境中添加 …

    Java 2023年6月5日
    099
  • SQL的一种写法,匹配就更新,否则就是插入

    语法:(using里面可以是查询语句,也可以是dao层传入来的对象,集合) 例子 (mybatis写法,dao层传入来的集合对象) 解析: Original: https://ww…

    Java 2023年6月9日
    083
  • spring BeanFactory VS FactoryBean

    一、FactoryBean示例 public class DateStringFactoryBean implements FactoryBean { private boolea…

    Java 2023年5月30日
    0102
  • 数据分表Mybatis Plus动态表名最优方案的探索

    一、应用场景 大家在使用Mybatis进行开发的时候,经常会遇到一种情况:按照月份month将数据放在不同的表里面,查询数据的时候需要跟不同的月份month去查询不同的表。 但是我…

    Java 2023年6月15日
    090
  • java MD5加密

    /** * MD5加密 * @param message 要进行MD5加密的字符串 * @return 加密结果为32位字符串 */ private static String g…

    Java 2023年6月16日
    084
  • SpringBoot项目解决全局响应返回中文乱码问题

    一、问题 新建的基于SpringBoot的MVC项目,在请响应体中,如果有中文,会显示为乱码。 二、解决方案 1、在application.properties中设置: Origi…

    Java 2023年5月30日
    077
  • Mybatis 记录

    {}, ${}两种传参数方式的区别 1) ${} 会将传入的参数完全拼接到sql语句中,也就是相当于一个拼接符号。 也就是,最后的处理方式就相当于 String sql = sel…

    Java 2023年5月30日
    055
  • 物联网架构成长之路(56)-SpringCloudGateway+JWT实现网关鉴权

    0. 前言结合前面两篇博客,前面博客实现了Gateway网关的路由功能。此时,如果每个微服务都需要一套帐号认证体系就没有必要了。可以在网关处进行权限认证。然后转发请求到后端服务。这…

    Java 2023年5月30日
    093
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球