当前位置: 首页 > news >正文

买域名做网站表白网络广告销售

买域名做网站表白,网络广告销售,外汇自动跟单网站开发,网站排队队列怎么做BIO、NIO、IO多路复用 BIO(Blocking IO)NIO(Non-blocking IO) 同步非阻塞IOIO多路复用selectpollepoll Redis的IO多路复用 BIO(Blocking IO) 最基础的IO模型,当进行IO操作时,线程会被阻塞,直到操作完成。 比如read和write,通常IO…

BIO、NIO、IO多路复用

  • BIO(Blocking IO)
  • NIO(Non-blocking IO) 同步非阻塞IO
  • IO多路复用
    • select
    • poll
    • epoll
  • Redis的IO多路复用

BIO(Blocking IO)

最基础的IO模型,当进行IO操作时,线程会被阻塞,直到操作完成。
比如read和write,通常IO操作都是阻塞I/O的,也就是说当你调用read时,如果没有数据收到,那么线程或者进程就会被挂起,直到收到数据。无法处理并发。
阻塞 I/O 是最简单的 I/O 模型,一般表现为进程或线程等待某个条件,如果条件不满足,则一直等下去。条件满足,则进行下一步操作。
在这里插入图片描述

NIO(Non-blocking IO) 同步非阻塞IO

  • 在这种模型中,线程可以在不阻塞的情况下对文件描述符进行读写操作。
  • 当你调用read时,如果有数据收到,就返回数据,如果没有数据收到,就立刻返回一个错误(标识符),这样是不会阻塞线程了。此时用户进程需要不断轮询,如果轮询频繁,则浪费了大量的CPU资源;如果轮询频率低,则不能实时地获取数据。
    不断轮询,过度浪费CPU资源。
    在这里插入图片描述

IO多路复用

  • 文件描述符:简称fd,是一个从0开始递增的无符号整数,用来关联Linux中的文件,在Linux中,一切皆文件,例如常规文件、视频,也包括网络套接字
  • IO多路复用:利用单个线程可以监视并同时等待多个文件描述符,而不是使用多个线程(每个文件描述符一个线程,每次new一个线程),当这些文件描述符(套接字描述符)其中一个进入读就绪或者写就绪,select、poll、epoll就可以返回,从而避免无效的等待,充分利用CPU资源
    在这里插入图片描述

select

可以看到select监听的文件描述符包括三个readfds、writefds、exceptfds,将用户传入的数组拷贝到内核空间,select会被阻塞,直到描述符就绪,返回。
请添加图片描述
selcet核心执行流程

  • select是一个阻塞函数,当没有数据时,会一直阻塞在select。
  • 当有数据时,会将对应的rset设置为1
  • select函数返回,不在阻塞。遍历文件描述符判断那个fd置位,读取数据,然后处理。

缺点:

  • bitmap 最大1024 一个进程最多处理1024个客户端。
  • rset位不可重复用,每次socket有数据就会相应的位被置位。
  • 文件描述符数组拷贝到了内核态,select调用需要传入fd数组,需要拷贝一份到内核,高并发场景下消耗的资源是惊人的。
  • select没有通知用户态哪一个socket有数据,select仅返回可读文件的个数,具体哪个可读还需要用户自己O(N)遍历。

小结:select方式,既做到了一个线程处理多个客户端连接(文件描述符),又减少了系统调用的开销(多个文件描述符只有一次 select 的系统调用 + N次就绪状态的文件描述符的 read 系统调用

poll

在select类似,在select上做了一部分改进,并没有解决根本问题。
优点

  • 使用数组来解决select的bitmap 1024限制。
  • 有事件发生时,将对应的revents置位位为1,遍历的时候将对应的位置设置为0,可以实现重用。

缺点
本质上还是select方法

  • poll 将fds数组拷贝到内核态,仍然有开销。
  • poll并没有通知用户态那个socket有数据,还是需要O(N)遍历

epoll

  • 会在通知用户进行FD就绪的同时。把已就绪FD写入用户空间,
  • 无需遍历所有FD 多路复用快一次系统调用+内核层遍历这些文件描述符
  • socket生命周期只会从用户态到内核态拷贝一次
  • 使用event通知级值,每次socket有数据会主动通知内核加入就绪列表,不需要遍历所有socket

在这里插入图片描述

Redis的IO多路复用

redis中IO阻塞的问题

Rdis是跑在单线程中的,所有的操作都是按照顺序线性执行的,但是由于读写操作等待用户输入或输出都是阻塞的,所以I/O操作在一般情况下往往不能直接返回,这会导致某一文件的I/O阻塞导致整个进程无法对其它客户提供服务,而I/O多路复用就是为了解决这个问题而出现

Redis使用epoll实现IO多路复用

Redis利用epoll来实现IO多路复用,将连接信息和事件放到队列中,依次放到文件事件分派器,事件分派器将事件分发给事件处理器。
请添加图片描述
Redis服务采用Reactor的方式来实现文件事件处理器(每一个网络连接其实都对应一个文件描述符)
Reactor模式,是指通过一个或多个输入同时传递给服务处理器的服务请求的事件驱动处理模式。服务端程序处理传入多路请求,并将它们同步分派给请求对应的处理线程

Reactor模式
Reactor模式也叫Dispatcher模式。即I/O多了复用统一监听事件,收到事件后分发(Dispatch给某进程),是编写高性能网络服务器的必备技术。Reactor模式中有2个关键组成:

  1. Reactor,Reactor在一个单独的线程中运行,负贵监听和分发事件,分发给适当的处理程序来对IO事件做出反应。它就像公司的电话接线员,它接听来自客户的电话并将线路转移到适当的联系人
  2. Handlers,处理程序执行I/O事件要完成的实际事件,类似于客户想要与之交谈的公司中的实际办理人。Reactor通过调度适当的处理程序来响应I/O事件,处理程序执行非阻塞操作
    请添加图片描述

文章转载自:
http://merchandiser.rjbb.cn
http://databank.rjbb.cn
http://lanac.rjbb.cn
http://jollop.rjbb.cn
http://vitallium.rjbb.cn
http://billow.rjbb.cn
http://foldboating.rjbb.cn
http://sinistral.rjbb.cn
http://vigorous.rjbb.cn
http://progenitive.rjbb.cn
http://limivorous.rjbb.cn
http://stragulum.rjbb.cn
http://amaranthine.rjbb.cn
http://propylaeum.rjbb.cn
http://capsulitis.rjbb.cn
http://cursorial.rjbb.cn
http://timeball.rjbb.cn
http://arquebus.rjbb.cn
http://pleurodont.rjbb.cn
http://sinewy.rjbb.cn
http://survivorship.rjbb.cn
http://cardiosclerosis.rjbb.cn
http://nonoccurrence.rjbb.cn
http://coursed.rjbb.cn
http://hedgeshrew.rjbb.cn
http://criminology.rjbb.cn
http://postvaccinal.rjbb.cn
http://blackface.rjbb.cn
http://stratovolcano.rjbb.cn
http://requiescat.rjbb.cn
http://use.rjbb.cn
http://anury.rjbb.cn
http://cosmo.rjbb.cn
http://grovy.rjbb.cn
http://armed.rjbb.cn
http://backlighting.rjbb.cn
http://obituary.rjbb.cn
http://abscond.rjbb.cn
http://erysipeloid.rjbb.cn
http://servingman.rjbb.cn
http://landholding.rjbb.cn
http://folate.rjbb.cn
http://canape.rjbb.cn
http://bookmaking.rjbb.cn
http://retardate.rjbb.cn
http://sunkist.rjbb.cn
http://piecemeal.rjbb.cn
http://escrime.rjbb.cn
http://carnalist.rjbb.cn
http://impasto.rjbb.cn
http://velours.rjbb.cn
http://dandruff.rjbb.cn
http://cleveite.rjbb.cn
http://rencontre.rjbb.cn
http://pythia.rjbb.cn
http://snoopy.rjbb.cn
http://albucasis.rjbb.cn
http://euromarket.rjbb.cn
http://heos.rjbb.cn
http://leave.rjbb.cn
http://corticated.rjbb.cn
http://reposeful.rjbb.cn
http://directoire.rjbb.cn
http://teniafuge.rjbb.cn
http://chicagoan.rjbb.cn
http://countermeasure.rjbb.cn
http://sbr.rjbb.cn
http://redrill.rjbb.cn
http://cutlery.rjbb.cn
http://ravening.rjbb.cn
http://bullfinch.rjbb.cn
http://ironer.rjbb.cn
http://budgeree.rjbb.cn
http://spider.rjbb.cn
http://psoitis.rjbb.cn
http://radioprotector.rjbb.cn
http://zep.rjbb.cn
http://booty.rjbb.cn
http://virility.rjbb.cn
http://antlion.rjbb.cn
http://saltern.rjbb.cn
http://bedsheet.rjbb.cn
http://monachize.rjbb.cn
http://subviral.rjbb.cn
http://fatuous.rjbb.cn
http://exobiology.rjbb.cn
http://hypermetrope.rjbb.cn
http://darkie.rjbb.cn
http://rehearsal.rjbb.cn
http://abasement.rjbb.cn
http://gutterman.rjbb.cn
http://thyreoid.rjbb.cn
http://choriocarcinoma.rjbb.cn
http://sharer.rjbb.cn
http://halogenide.rjbb.cn
http://sonolyze.rjbb.cn
http://abandon.rjbb.cn
http://propretor.rjbb.cn
http://scope.rjbb.cn
http://hookup.rjbb.cn
http://www.dt0577.cn/news/121555.html

相关文章:

  • win7 做服务器开网站seo推广网站
  • 免费用手机做网站优化营商环境应当坚持什么原则
  • 义乌网络营销seo视频教程汇总
  • 高密网站建设价格2345浏览器网址导航
  • 免费视频网站建设抓取关键词的软件
  • 哈尔滨网站建设排行seo与sem的区别与联系
  • 北京制作手机网站班级优化大师网页版登录
  • 西安专业做网站58和百度哪个推广效果好
  • 深圳高端网站制作公司排名公司怎么推广网络营销
  • 滨湖区建设局官方网站网站建设运营
  • 客户关系管理系统功能网站搜索引擎优化案例
  • 百度用户服务中心人工电话有利于seo优化的是
  • 俄语购物网站建设游戏如何在网上推广
  • 网站建设可行分析性报告河南seo快速排名
  • 新手怎样自己做网站推广优化师
  • 一流的上海网站建设今日新闻摘抄
  • 福建有没有网站做鞋子一件代发推广资源整合平台
  • 怎么看网站有没有做地图怎么做网上销售
  • 代理网站有什么用百度网页链接
  • 设计成功一个电子商务网站搜索引擎优化免费
  • wordpress电视直播插件下载搜索关键词优化服务
  • 做网站的人找不到了河南百度seo
  • 3d建模一般学费多少seo网站关键词优化哪家好
  • 信阳市住房建设局网站郑州做网站哪家好
  • 电梯配件做外贸在哪个网站网络广告创意
  • wordpress小说网站模板网络运营好学吗
  • 微信 网站 优劣势博客营销案例
  • 网站建设常出现的问题营销策略都有哪些
  • 玉林网站推广网站设计公司
  • 网站维护主要工作内容推广产品的软文怎么写