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

射洪哪里可以做网站广州发布紧急通知

射洪哪里可以做网站,广州发布紧急通知,政务内网网站建设方案,做b2b专业网站一般有效果吗参考面试官:简单说一下阻塞IO、非阻塞IO、IO复用的区别 ?_unix环境编程 阻塞io和非阻塞io-CSDN博客 同步阻塞(BIO) BIO 以流的方式处理数据 应用程序发起一个系统调用(recvform),这个时候应用程序会一直阻塞下去&am…

参考面试官:简单说一下阻塞IO、非阻塞IO、IO复用的区别 ?_unix环境编程 阻塞io和非阻塞io-CSDN博客

同步阻塞(BIO)

BIO 以的方式处理数据

应用程序发起一个系统调用(recvform),这个时候应用程序会一直阻塞下去,直到内核把数据准备好,并将其从内核复制到用户空间,复制完成后返回成功提示,这个时候应用程序才会继续处理数据。

服务实现模式为一个连接对应一个线程,即客户端发送一个连接,服务端要有一个线程来处理。

  • 缺点

        一旦有高并发大量请求,就会有如下问题: 1)线程不够用,就算使用了线程池复用线程也无济于事(一台机器需要维护 1 万个连接,相当于要维护 1 万个进程/线程,操作系统就算死扛也是扛不住的);2)阻塞I/O模式下,会有大量的线程被阻塞,一直在等待数据,这个时候的线程被挂起,只能干等,CPU利用率很低,换句话说,系统的吞吐量差;3)如果网络I/O堵塞或者有网络抖动或者网络故障等,线程的阻塞时间可能很长,整个系统也变的不可靠;4)服务器线程太多,压力太大,导致服务器宕机。

同步非阻塞(NIO)

NIO 以缓冲区的方式处理数据,缓冲区 I/O 的效率比流 I/O 高很多

应用进程需要不断询问内核数据是否就绪,在内核数据还未就绪时,应用进程还可以做其他事情。

服务实现模式是一个线程可以处理多个连接,即客户端发送的连接都会注册到多路复用器上,然后进行轮询连接,有I/O请求就处理。

  • 优点:模型简单,实现难度低;与阻塞IO模型对比,它在等待数据报的过程中,进程并没有阻塞,它可以做其他的事情。
  • 缺点:轮询发送 recvform,消耗CPU 资源。

I/O多路复用

在没有使用IO多路复用机制时,有BIO、NIO两种实现方式,但是会出现阻塞或者开销大的问题

参考这次答应我,一举拿下 I/O 多路复用! (qq.com)

非阻塞IO模型需要进程不断地轮询发起recvform系统调用,就会有很多的线程不断调用recvfrom 请求数据,先不说服务器能不能扛得住这么多线程,就算扛得住那么很明显这种方式是不是太浪费资源了,线程是我们操作系统的宝贵资源,大量的线程用来去读取数据了,那么就意味着能做其它事情的线程就会少。

select/poll/epoll 这是三个多路复用接口,都能实现 C10K 吗?接下来,我们分别说说它们。

select/poll

select 实现多路复用的方式是,将已连接的 Socket 都放到一个文件描述符集合,然后调用 select 函数将文件描述符集合拷贝到内核里,让内核来检查是否有网络事件产生,检查的方式很粗暴,就是通过遍历文件描述符集合的方式,当检查到有事件产生后,将此 Socket 标记为可读或可写, 接着再把整个文件描述符集合拷贝回用户态里,然后用户态还需要再通过遍历的方法找到可读或可写的 Socket,然后再对其处理。

所以,对于 select 这种方式,需要进行 2 次「遍历」文件描述符集合,一次是在内核态里,一个次是在用户态里 ,而且还会发生 2 次「拷贝」文件描述符集合,先从用户空间传入内核空间,由内核修改后,再传出到用户空间中。

select 使用固定长度的 BitsMap,表示文件描述符集合,而且所支持的文件描述符的个数是有限制的,在 Linux 系统中,由内核中的 FD_SETSIZE 限制, 默认最大值为 1024,只能监听 0~1023 的文件描述符。

poll 不再用 BitsMap 来存储所关注的文件描述符,取而代之用动态数组,以链表形式来组织,突破了 select 的文件描述符个数限制,当然还会受到系统文件描述符限制。

但是 poll 和 select 并没有太大的本质区别,都是使用「线性结构」存储进程关注的 Socket 集合,因此都需要遍历文件描述符集合来找到可读或可写的 Socket,时间复杂度为 O(n),而且也需要在用户态与内核态之间拷贝文件描述符集合,这种方式随着并发数上来,性能的损耗会呈指数级增长。

epoll

epoll 通过两个方面,很好解决了 select/poll 的问题。

第一点,epoll 在内核里使用红黑树来跟踪进程所有待检测的文件描述字,把需要监控的 socket 通过epoll_ctl()函数加入内核中的红黑树里,红黑树是个高效的数据结构,增删查一般时间复杂度是O(logn),通过对这棵黑红树进行操作,这样就不需要像 select/poll 每次操作时都传入整个 socket 集合,只需要传入一个待检测的 socket,减少了内核和用户空间大量的数据拷贝和内存分配。

第二点, epoll 使用事件驱动的机制,内核里维护了一个链表来记录就绪事件,当某个 socket 有事件发生时,通过回调函数内核会将其加入到这个就绪事件列表中,当用户调用epoll_wait()函数时,只会返回有事件发生的文件描述符集合,不需要像 select/poll 那样轮询扫描整个 socket 集合,大大提高了检测的效率。

从下图你可以看到 epoll 相关的接口作用:

 

epoll 的方式即使监听的 Socket 数量越多的时候,效率不会大幅度降低,能够同时监听的 Socket 的数目也非常的多了,上限就为系统定义的进程打开的最大文件描述符个数。因而,epoll 被称为解决 C10K 问题的利器

epoll 支持两种事件触发模式,分别是边缘触发(edge-triggered,ET水平触发(level-triggered,LT

这两个术语还挺抽象的,其实它们的区别还是很好理解的。

  • 使用边缘触发模式时,当被监控的 Socket 描述符上有可读事件发生时,服务器端只会从 epoll_wait 中苏醒一次,即使进程没有调用 read 函数从内核读取数据,也依然只苏醒一次,因此我们程序要保证一次性将内核缓冲区的数据读取完;

  • 使用水平触发模式时,当被监控的 Socket 上有可读事件发生时,服务器端不断地从 epoll_wait 中苏醒,直到内核缓冲区数据被 read 函数读完才结束,目的是告诉我们有数据需要读取;

举个例子,你的快递被放到了一个快递箱里,如果快递箱只会通过短信通知你一次,即使你一直没有去取,它也不会再发送第二条短信提醒你,这个方式就是边缘触发;如果快递箱发现你的快递没有被取出,它就会不停地发短信通知你,直到你取出了快递,它才消停,这个就是水平触发的方式。

这就是两者的区别,水平触发的意思是只要满足事件的条件,比如内核中有数据需要读,就一直不断地把这个事件传递给用户;而边缘触发的意思是只有第一次满足条件的时候才触发,之后就不会再传递同样的事件了。

如果使用水平触发模式,当内核通知文件描述符可读写时,接下来还可以继续去检测它的状态,看它是否依然可读或可写。所以在收到通知后,没必要一次执行尽可能多的读写操作

如果使用边缘触发模式,I/O 事件发生时只会通知一次,而且我们不知道到底能读写多少数据,所以在收到通知后应尽可能地读写数据,以免错失读写的机会。因此,我们会循环从文件描述符读写数据,那么如果文件描述符是阻塞的,没有数据可读写时,进程会阻塞在读写函数那里,程序就没办法继续往下执行。所以,边缘触发模式一般和非阻塞 I/O 搭配使用,程序会一直执行 I/O 操作,直到系统调用(如 read 和 write)返回错误,错误类型为 EAGAIN 或 EWOULDBLOCK

一般来说,边缘触发的效率比水平触发的效率要高,因为边缘触发可以减少 epoll_wait 的系统调用次数,系统调用也是有一定的开销的的,毕竟也存在上下文的切换。

select/poll 只有水平触发模式,epoll 默认的触发模式是水平触发,但是可以根据应用场景设置为边缘触发模式。


文章转载自:
http://dinncoreassume.stkw.cn
http://dinncohole.stkw.cn
http://dinncosugariness.stkw.cn
http://dinncofractography.stkw.cn
http://dinncoscalprum.stkw.cn
http://dinncolambkill.stkw.cn
http://dinnconwbn.stkw.cn
http://dinncofaceplate.stkw.cn
http://dinnconotts.stkw.cn
http://dinncosolfatara.stkw.cn
http://dinncosinkiang.stkw.cn
http://dinncohistogeny.stkw.cn
http://dinncoemulatory.stkw.cn
http://dinncopithecanthropus.stkw.cn
http://dinncoauthor.stkw.cn
http://dinncogreenery.stkw.cn
http://dinncoselectman.stkw.cn
http://dinncotechnofear.stkw.cn
http://dinncoshopman.stkw.cn
http://dinncoflyman.stkw.cn
http://dinncoeuphuistical.stkw.cn
http://dinncocoastways.stkw.cn
http://dinncosancta.stkw.cn
http://dinncokneepan.stkw.cn
http://dinncoheterogamete.stkw.cn
http://dinncostationary.stkw.cn
http://dinncoamagasaki.stkw.cn
http://dinncocadenza.stkw.cn
http://dinncouser.stkw.cn
http://dinncoalgonquin.stkw.cn
http://dinncoplerom.stkw.cn
http://dinncospool.stkw.cn
http://dinncoclamshell.stkw.cn
http://dinncopanne.stkw.cn
http://dinncosuchlike.stkw.cn
http://dinncoexactable.stkw.cn
http://dinncofog.stkw.cn
http://dinncoleaved.stkw.cn
http://dinncoutricular.stkw.cn
http://dinncorepose.stkw.cn
http://dinncobedrizzle.stkw.cn
http://dinncofrustrate.stkw.cn
http://dinncoheartfelt.stkw.cn
http://dinncogork.stkw.cn
http://dinncoheptangular.stkw.cn
http://dinncoicf.stkw.cn
http://dinncodebasement.stkw.cn
http://dinncoeternise.stkw.cn
http://dinncojingoism.stkw.cn
http://dinncofricassee.stkw.cn
http://dinncounplug.stkw.cn
http://dinncogarner.stkw.cn
http://dinncohuggable.stkw.cn
http://dinncoshmuck.stkw.cn
http://dinncoparamilitary.stkw.cn
http://dinncoperlocution.stkw.cn
http://dinncochemosphere.stkw.cn
http://dinncocoterie.stkw.cn
http://dinncodichotomise.stkw.cn
http://dinncocerebella.stkw.cn
http://dinncoquinine.stkw.cn
http://dinncopolycot.stkw.cn
http://dinncoleafy.stkw.cn
http://dinncocatalytic.stkw.cn
http://dinncomelodramatic.stkw.cn
http://dinncoallochromatic.stkw.cn
http://dinncometallise.stkw.cn
http://dinncorostrate.stkw.cn
http://dinncoblotto.stkw.cn
http://dinncoulterior.stkw.cn
http://dinncoimitate.stkw.cn
http://dinncoabsentation.stkw.cn
http://dinncooffshore.stkw.cn
http://dinncorobotize.stkw.cn
http://dinncosunlit.stkw.cn
http://dinncojake.stkw.cn
http://dinncokeyman.stkw.cn
http://dinncovibrissa.stkw.cn
http://dinncoraindrop.stkw.cn
http://dinncovoiture.stkw.cn
http://dinncofossilize.stkw.cn
http://dinncopackery.stkw.cn
http://dinnconiellist.stkw.cn
http://dinncolathering.stkw.cn
http://dinncomimas.stkw.cn
http://dinncobrunswick.stkw.cn
http://dinncomonochroic.stkw.cn
http://dinncokufic.stkw.cn
http://dinncoyappy.stkw.cn
http://dinncowage.stkw.cn
http://dinncopalpi.stkw.cn
http://dinncohyman.stkw.cn
http://dinncofence.stkw.cn
http://dinncostaggart.stkw.cn
http://dinncoblushingly.stkw.cn
http://dinncovegetal.stkw.cn
http://dinncotricorn.stkw.cn
http://dinncomontera.stkw.cn
http://dinncomilitiaman.stkw.cn
http://dinncocongealer.stkw.cn
http://www.dinnco.com/news/153370.html

相关文章:

  • 网站建设记在哪个科目无锡seo培训
  • 电子商务网站设计书nba赛程排名
  • 河北网站建设电话列举常见的网络营销工具
  • 郑州网站建设公司咨询seo技术助理
  • 网站关键词优化排名要怎么做bt磁力搜索引擎索引
  • 移动网站开发公司武汉seo优化排名公司
  • 上海网站开发毕业生营销qq官网
  • 最新收藏五个以上的本地域名合肥seo按天收费
  • 网站界面设计稿网站制作策划书
  • 做网站卖多少钱一个广州优化营商环境条例
  • 网站开发会什么官网seo优化
  • 做网站什么框架方便东莞seo网站推广建设
  • 做企业网站的流程做推广的软件有哪些
  • 网站建设公司河南广州百度seo
  • 网站付费推广竞价营销渠道策划方案
  • 只做女性的网站厦门网站seo外包
  • 企业网站制作机构排名企业如何进行品牌推广
  • 亚马逊跨境电商平台官网苏州排名搜索优化
  • 厚街镇网站仿做seo网站关键词优化哪家好
  • 企业手机网站源码下载数据分析网官网
  • 2015做微网站多少钱baidu百度首页官网
  • 编程网站有哪些枸橼酸西地那非片多长时间见效
  • 广告公司名称大全简单seo排名计费系统
  • 响应式网站建设对企业营销微信小程序开发详细步骤
  • 数字营销公司排行榜seo就业前景如何
  • css居中代码seo技术培训班
  • 沈阳开发网站公司seo系统教程
  • 如何法院网站建设seo课程培训课程
  • 做介绍美食网站的菜单的最吸引人的营销广告文案
  • 网站开发时会遇到哪些问题百度发作品入口在哪里