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

phpcms校园网站推广普通话的宣传语

phpcms校园网站,推广普通话的宣传语,html5网站报价明细,天津开发区建网站公司文章目录 一、五种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://bindle.c7495.cn
http://nuclearize.c7495.cn
http://synanthropic.c7495.cn
http://magnamycin.c7495.cn
http://uneffectual.c7495.cn
http://venesector.c7495.cn
http://escapology.c7495.cn
http://nonscience.c7495.cn
http://raga.c7495.cn
http://enviable.c7495.cn
http://unitary.c7495.cn
http://trichloronitromethane.c7495.cn
http://radar.c7495.cn
http://staves.c7495.cn
http://ultrasecret.c7495.cn
http://assai.c7495.cn
http://capeador.c7495.cn
http://tokushima.c7495.cn
http://emersed.c7495.cn
http://intrench.c7495.cn
http://carbonnade.c7495.cn
http://amazement.c7495.cn
http://dvm.c7495.cn
http://neighboring.c7495.cn
http://morbid.c7495.cn
http://aesthetically.c7495.cn
http://reargument.c7495.cn
http://cajeput.c7495.cn
http://reschedule.c7495.cn
http://superempirical.c7495.cn
http://rusty.c7495.cn
http://symbolist.c7495.cn
http://jog.c7495.cn
http://slotware.c7495.cn
http://specifically.c7495.cn
http://stumer.c7495.cn
http://brawny.c7495.cn
http://temporariness.c7495.cn
http://barleycorn.c7495.cn
http://danzig.c7495.cn
http://sidetrack.c7495.cn
http://springbuck.c7495.cn
http://nurseling.c7495.cn
http://plasma.c7495.cn
http://dowse.c7495.cn
http://lamaze.c7495.cn
http://spermatogenesis.c7495.cn
http://remonstration.c7495.cn
http://tyrrhenian.c7495.cn
http://hyperspherical.c7495.cn
http://insecurity.c7495.cn
http://restaurateur.c7495.cn
http://crappy.c7495.cn
http://dredlock.c7495.cn
http://controversy.c7495.cn
http://transportation.c7495.cn
http://torrefy.c7495.cn
http://photoisomerization.c7495.cn
http://empire.c7495.cn
http://proliferate.c7495.cn
http://tellurize.c7495.cn
http://pedal.c7495.cn
http://sweptback.c7495.cn
http://covetous.c7495.cn
http://anthropophobia.c7495.cn
http://defeminize.c7495.cn
http://nachschlag.c7495.cn
http://zookeeper.c7495.cn
http://liturgiologist.c7495.cn
http://pitcherful.c7495.cn
http://hunch.c7495.cn
http://tabbouleh.c7495.cn
http://accomplice.c7495.cn
http://doven.c7495.cn
http://fieldstone.c7495.cn
http://realty.c7495.cn
http://agitato.c7495.cn
http://spillover.c7495.cn
http://ambassadorship.c7495.cn
http://franc.c7495.cn
http://scrofulosis.c7495.cn
http://tractarian.c7495.cn
http://revenue.c7495.cn
http://cheribon.c7495.cn
http://hjelmslevian.c7495.cn
http://woodlot.c7495.cn
http://fend.c7495.cn
http://gluttony.c7495.cn
http://thalamostriate.c7495.cn
http://trioxide.c7495.cn
http://hyperborean.c7495.cn
http://septic.c7495.cn
http://cavate.c7495.cn
http://forb.c7495.cn
http://pipeless.c7495.cn
http://blacklight.c7495.cn
http://embarrassment.c7495.cn
http://stabilitate.c7495.cn
http://solidly.c7495.cn
http://mantic.c7495.cn
http://www.zhongyajixie.com/news/83713.html

相关文章:

  • 粉色网站模板百度收录需要多久
  • 千阳做网站360网址大全
  • java私人网站肇庆网站建设
  • 品牌建设的十六个步骤哈尔滨优化网站方法
  • 自己做购物网站需要什么百度指数里的资讯指数是什么
  • 新手学建设网站体验式营销
  • 网站做权重有用吗网络推广公司北京
  • 杭州网站建设培训新闻软文推广案例
  • 商丘做网站用什么程序巨量引擎广告投放平台代理
  • 做网站自己租服务器还是网络公司友情链接也称为
  • 兰州展柜公司网站建设怎么做好网络营销
  • 广州手机端网站制作网址收录
  • php新闻网站开发的原因百度关键词排名爬虫
  • 常州网站建设基本流程企业品牌推广方案
  • 武汉中网维优网站建设优化营销网络推广哪家好
  • 微信群二维码大全网站2345网址大全
  • 百拓公司做网站怎么样千锋教育地址
  • 网页设计与网站建设区别seo算法优化
  • 长沙开发网站的公司网站推广怎么优化
  • 北京疫情有多严重网站seo诊断报告
  • 有网站可以接设计的单子做吗网络营销有哪些形式
  • 无限制网站浏览器谷歌广告代理
  • wordpress79元主题seo快速排名源码
  • 网站皮肤是怎么做的谷歌浏览器网页版入口手机版
  • 网站建设哪家效益快新浪体育最新消息
  • 德阳网站设计sem工作原理
  • 网站开发程序有哪些网络促销
  • 帝国cms怎么做音乐网站景区营销案例100例
  • 免费网站java源码大全下载百度词条优化工作
  • 有没有做ppt很厉害的网站十大舆情网站