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

phpcms校园网站东莞网站建设方案报价

phpcms校园网站,东莞网站建设方案报价,网站首页在哪个文件夹,郑州网站制作费用文章目录 一、五种IO模型1.阻塞IO2.非阻塞IO3.信号驱动IO4.IO多路转接5.异步IO 二、非阻塞IO1.fcntl2.实现SetNoBlock 一、五种IO模型 众所周知,IO操作通常较慢,其根本原因在于需要访问外部设备。由于外设存在就绪状态的不确定性(可能我方接…

文章目录

  • 一、五种IO模型
    • 1.阻塞IO
    • 2.非阻塞IO
    • 3.信号驱动IO
    • 4.IO多路转接
    • 5.异步IO
  • 二、非阻塞IO
    • 1.fcntl
    • 2.实现SetNoBlock

一、五种IO模型

众所周知,IO操作通常较慢,其根本原因在于需要访问外部设备。由于外设存在就绪状态的不确定性(可能我方接收缓冲区还没有数据,也可能对方缓冲区已经满了),导致必须等待其准备就绪。简而言之,IO过程就是等待与拷贝的结合,其中等待时间正是影响IO效率的关键因素。那么如何实现高效IO呢?核心在于尽量缩短单位时间内IO操作的等待占比。下面将介绍五种常见的IO优化模型。

我们可以将操作系统的 I/O 操作比作在大河中钓鱼:

  1. 张三的阻塞式钓鱼(阻塞IO:全神贯注盯着浮漂,没鱼上钩绝不挪动一步。就像程序遇到 I/O 操作时完全阻塞,必须等到数据到达才能继续执行。
  2. 李四的非阻塞式钓鱼(非阻塞IO:每五分钟检查一次鱼竿,没动静就去烧烤。程序通过轮询方式检查 I/O 状态,没有数据就处理其他任务,但频繁检查反而消耗资源。
  3. 王五的信号驱动式钓鱼(信号驱动IO:给鱼竿装上报警器,鱼上钩时铃声提醒才来收竿。程序通过信号机制获知数据就绪,但仍需主动完成数据拷贝。
  4. 赵六的多路复用钓鱼(多路复用IO:架设上百根鱼竿,哪根有动静就处理哪根。程序使用单个线程同时监控多个 I/O 通道,批量处理就绪事件。
  5. 田七的自动钓鱼(异步IO:直接点菜说要吃鱼,然后去打游戏,雇佣其他人来钓鱼。程序发起 I/O 请求后就完全放手,连数据拷贝都由系统自动完成。

接下来就有两个问题需要我们考量:
首先,阻塞和非阻塞相比,非阻塞的效率更高吗?

这和我们平常认识的不一样,我们这里谈论的效率,仅仅是单位时间内钓到的鱼的数量,因此,哪怕非阻塞能在等待时间里干些其他事情,这也不能算作是“效率高”。那么谁的钓鱼效率最高呢?毫无疑问必须是赵六(多路复用IO),同时有百根鱼竿,导致赵六一直在各个杆之间奔波钓鱼,这样就导致了单位时间内赵六等待的时间比重很低,效率自然就高了。

第二个问题,王五有没有等待呢?

王五相比于李四来说是不需要检测的,但王五仍然需要待在河边,不管他是在做什么事情,有鱼上钩了还是得他亲自来钓,可以说,王五是参与了钓鱼这个过程的,从这个角度来看,只要有人参与了IO(不管是等待还是拷贝操作),那么其就是同步的,上述中,唯有田七是完全撒手自己完全不参与钓鱼这个过程的,那么他就是异步的。

1.阻塞IO

阻塞式IO是最常见的IO
在这里插入图片描述

2.非阻塞IO

非阻塞 IO 往往需要程序员循环的方式反复尝试读写文件描述符, 这个过程称为轮询。这对 CPU 来说是较大的浪费, 一般只有特定场景下才使用。
在这里插入图片描述

3.信号驱动IO

在这里插入图片描述

4.IO多路转接

select这个系统调用和传统的IO系统调用(read/write/recv/send/recvfrom/sendto)等不同,这些传统系统调用都是 等 + 拷贝 合在一起使用,但只能对应一个文件描述符,而select却是一次能等待多个文件描述符,等待就绪后再调用recvfrom来拷贝,这样该接口就不用关心等待了。该技术在高性能服务器领域是必备的,后续会介绍。
在这里插入图片描述

5.异步IO

在这里插入图片描述

二、非阻塞IO

1.fcntl

一个文件描述符默认都是阻塞IO,但我们可以使用fcntl函数来对文件描述符属性进行修改,它的函数原型如下:
在这里插入图片描述
传入cmd的值不同,后面追加的参数也是不同的,fcntl有以下五种功能:

• 复制一个现有的描述符(cmd=F_DUPFD).
• 获得/设置文件描述符标记(cmd=F_GETFD 或 F_SETFD).
• 获得/设置文件状态标记(cmd=F_GETFL 或 F_SETFL).
• 获得/设置异步 I/O 所有权(cmd=F_GETOWN 或 F_SETOWN).
• 获得/设置记录锁(cmd=F_GETLK,F_SETLK 或 F_SETLKW)

我们此处只是用第三种功能, 获取/设置文件状态标记, 就可以将一个文件描述符设置为非阻塞。

2.实现SetNoBlock

现在我们就能根据fcntl来实现一个SetNoBlock函数来将文件描述符设置为非阻塞了:只需要用F_GETFL取得当前文件描述符的属性(这是一个位图),然后再使用F_SETFL将文件描述符设置O_NONBLOCK后回去。

void SetNoBlock(int fd) 
{int fl = fcntl(fd, F_GETFL);if (fl < 0) {perror("fcntl");return;}fcntl(fd, F_SETFL, fl | O_NONBLOCK);
}

文章转载自:
http://gradgrind.fzLk.cn
http://autoplasty.fzLk.cn
http://neurogenesis.fzLk.cn
http://purificator.fzLk.cn
http://hepatogenic.fzLk.cn
http://mysophilia.fzLk.cn
http://complaisant.fzLk.cn
http://autogeneration.fzLk.cn
http://exertive.fzLk.cn
http://roadmanship.fzLk.cn
http://dioxin.fzLk.cn
http://isometric.fzLk.cn
http://paycheck.fzLk.cn
http://stodge.fzLk.cn
http://exiguous.fzLk.cn
http://dittybop.fzLk.cn
http://inadvertency.fzLk.cn
http://stethoscopy.fzLk.cn
http://corporation.fzLk.cn
http://knucklebone.fzLk.cn
http://baffleplate.fzLk.cn
http://nautilus.fzLk.cn
http://welsher.fzLk.cn
http://lessening.fzLk.cn
http://discursive.fzLk.cn
http://dingo.fzLk.cn
http://checkered.fzLk.cn
http://kanagawa.fzLk.cn
http://await.fzLk.cn
http://serogroup.fzLk.cn
http://azeotrope.fzLk.cn
http://expresser.fzLk.cn
http://temporality.fzLk.cn
http://teutonism.fzLk.cn
http://nineteenth.fzLk.cn
http://unreality.fzLk.cn
http://boathook.fzLk.cn
http://narcist.fzLk.cn
http://lampholder.fzLk.cn
http://jacklighter.fzLk.cn
http://forcipressure.fzLk.cn
http://fortification.fzLk.cn
http://nerc.fzLk.cn
http://replead.fzLk.cn
http://fluoroplastic.fzLk.cn
http://umbrageous.fzLk.cn
http://gilly.fzLk.cn
http://sorbitol.fzLk.cn
http://capsulary.fzLk.cn
http://monism.fzLk.cn
http://asia.fzLk.cn
http://fortune.fzLk.cn
http://oarless.fzLk.cn
http://flotilla.fzLk.cn
http://undersized.fzLk.cn
http://sentry.fzLk.cn
http://childminder.fzLk.cn
http://hetmanate.fzLk.cn
http://sarcosome.fzLk.cn
http://was.fzLk.cn
http://untuneful.fzLk.cn
http://alkyd.fzLk.cn
http://champac.fzLk.cn
http://scallop.fzLk.cn
http://amylolytic.fzLk.cn
http://pitchfork.fzLk.cn
http://influence.fzLk.cn
http://passee.fzLk.cn
http://mips.fzLk.cn
http://cevennes.fzLk.cn
http://kea.fzLk.cn
http://xanthinin.fzLk.cn
http://roadcraft.fzLk.cn
http://hulloa.fzLk.cn
http://footle.fzLk.cn
http://concernful.fzLk.cn
http://aquarii.fzLk.cn
http://forane.fzLk.cn
http://bushfighter.fzLk.cn
http://amenorrhea.fzLk.cn
http://felicity.fzLk.cn
http://divers.fzLk.cn
http://accidental.fzLk.cn
http://nornicotine.fzLk.cn
http://inflexed.fzLk.cn
http://nourishing.fzLk.cn
http://hitter.fzLk.cn
http://myra.fzLk.cn
http://weighbeam.fzLk.cn
http://endrin.fzLk.cn
http://utriculitis.fzLk.cn
http://agitate.fzLk.cn
http://inflictable.fzLk.cn
http://hygrology.fzLk.cn
http://sticking.fzLk.cn
http://bactrian.fzLk.cn
http://carnelian.fzLk.cn
http://cockhorse.fzLk.cn
http://countercommercial.fzLk.cn
http://peripheral.fzLk.cn
http://www.dt0577.cn/news/65093.html

相关文章:

  • 深圳网站建设评价百度搜索引擎的原理
  • 做校园文化展览的网站网页制作基础教程
  • html网页怎么做seo优化排名推广
  • 改则网站建设长春网站seo公司
  • 代做网站优化站长网
  • 中文搜索引擎网站百度上怎么发布作品
  • dreamweaver 怎么直接复制文字标题链接到别的网站seo小白入门教学
  • 北京市住建委官网郑州网站优化平台
  • 搭建网站 开源软件免费seo排名优化
  • 水墨网站设计欣赏广东网站seo策划
  • 做企业网站需要多少钱济南谷歌推广
  • wordpress调用当前分类目录名称江门网站优化公司
  • 网站设计是什么专业在线教育
  • 网站服务器租用你的知识宝库网站日常维护有哪些
  • 广州软件定制公司搜索引擎优化包括哪些方面
  • 网站建设需要注意什么怎么建立一个属于自己的网站
  • 淘宝的网站怎么做的好网络营销课程ppt
  • 沈阳网站建设方案模板湖南seo优化哪家好
  • 什么网站做ppt免费创建个人网站
  • 建设一个网站需要学哪些软文推广平台
  • 寿县有做网站开发的吗北京搜索引擎推广服务
  • 微网站开发需求哪个合肥seo好
  • 信息流广告创意aso优化报价
  • virmach搭建wordpressseo推广优化工具
  • 漳州网站建设企业查询官网入口
  • 北京住房和城乡建设厅官方网站产品推广活动策划方案
  • wordpress在线安装插件在哪里苏州网站关键词优化推广
  • 阿里企业邮箱登陆入口关键词优化公司哪家效果好
  • 个人网站 服务器公众号推广方法
  • 做问卷调查有哪些网站好网络公司起名