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

农业大学网站建设特点海口免费自助建站模板

农业大学网站建设特点,海口免费自助建站模板,现在做什么行业前景好,广东省石油化工建设集团公司网站From: http://blog.chinaunix.net/uid-28458801-id-4463981.html libuv 和 libev #xff0c;两个名字相当相近的 I/O Library#xff0c;最近有幸用两个 Library 都写了一些东西#xff0c;下面就来说一说我本人对两者共同与不同点的主观表述。 高性能网络编程这个话题已经… From: http://blog.chinaunix.net/uid-28458801-id-4463981.html libuv 和 libev 两个名字相当相近的 I/O Library最近有幸用两个 Library 都写了一些东西下面就来说一说我本人对两者共同与不同点的主观表述。 高性能网络编程这个话题已经被讨论烂了。异步异步还是异步。不管是 epoll 也好kqueue 也罢总是免不了异步这个话题。 libuv是异步的libev是同步的多路IO复用。 libev 是系统I/O复用的简单封装基本上来说它解决了 epoll kqueuq 与 select 之间 API 不同的问题。保证使用 livev 的 API 编写出的程序可以在大多数 *nix 平台上运行。但是 libev 的缺点也是显而易见由于基本只是封装了 Event Library用起来有诸多不便。比如 accept(3) 连接以后需要手动 setnonblocking。从 socket 读写时需要检测 EAGAIN 、EWOULDBLOCK 和 EINTER 。这也是大多数人认为异步程序难写的根本原因。 libuv 则显得更为高层。libuv 是 joyent 给 Node 做的一套 I/O Library 。而这也导致了 libuv 最大的特点就是处处回调。基本上只要有可能阻塞的地方libuv 都使用回调处理。这样做实际上大大减轻了程序员的工作量。因为当回调被 call 的时候libuv 保证你有事可做这样 EAGAIN 和 EWOULDBLOCK 之类的 handle 就不是程序员的工作了libuv 会默默的帮你搞定。 libev 在 socket 发生读写事件时只告诉你“XX socket 可以读/写了自己看着办吧”。往往我们需要自己申请内存并调用 read(3) 或者 write(3) 来响应 I/O 事件。 libuv 则稍微复杂一些我们分读/写两个部分来描述。 当接口可读时libuv 会调用你的 allocate callback 来申请内存并将读到的内容写入。当读取完毕后libuv会 call 你为这个 socket 设置的回调函数在参数中带着这个 buffer 的信息。你只需要负责处理这个 buffer 并且free 掉就OK了。因为是从 buffer 中读取数据在你的 callback 被调用时数据已经 ready 了所以程序员也就不用考虑阻塞的问题了。 而对写的处理则更显巧妙。libuv 没有 write callback 如果你想写东西直接 generate 一个 write request 连着要写的 buffer 一起丢给 libuv libuv 会把你的 write request 加进相应 socket 的 write queue 在 I/O 可写时按顺序写入。 C 没有闭包所以确定读写上下文是 libuv 的使用者需要面对的问题。否则程序面对汹涌而来的 buffer 也不能分得清哪个是哪个的数据。在这一点的处理上libuv 跟 libev 一样都是使用了一个 void *data来解决问题。你可以用 data 这个 member 存储任何东西这样当 buffer 来的时候只需要简单的把 data cast 到你需要的类型就 OK 了。 libev 没有异步 DNS 解析这一点一直广为垢病。 libuv 有异步的 DNS 解析解析结果也是通过回调的方式通知程序。 libev 完全是单线程的。 libuv 需要多线程库支持因为其在内部维护了一个线程池来 handle 诸如 getaddrinfo(3) 这样的无法异步的调用。 libev 貌似是作者一个人在开发版本管理使用的还是 CVS 社区参与度明显不高。 libuv 社区十分活跃几乎每天都有人提出 Issue 并贡献代码。 libev 不支持 IOCP 如果需要在 Win 下运行的程序会很麻烦。 libuv 支持 IOCP 有相应脚本编译 Win 下的库。 ----------------------------------------------------------------------------------- Q: 博主有没做过两者的benchmark他们之前的性能对比如何 A: 当时用 libev 和 libuv 写过一个简单的 HTTP Hello World Server 。具体结果记不清楚了但是可以说性能差距在 5% 以内。 Q:  libuv 在 unix 上应该是用 libev 作为 non-blocking IO 的实现的吧libuv 中线程池里线程的数量会增加么是否会有上限如果上限到了是不是就会出现 block 的情况 A: 1. libuv 在大概5个月前已经完全不使用 libev 了参见 commit665a316aa9d551ffdd00d1192d0c3d9c88d7e866 ; 2. libuv 的线程池在BSS上数量固定为4个参见https://github.com/joyent/libuv/blob/master/src/unix/threadpool.c#L28 ; 3. libuv 的线程池共享一个work queue 所以不会出现 block 的情况 libevent : 名气最大应用最广泛历史悠久的跨平台事件库 libev : 较libevent而言设计更简练性能更好但对Windows支持不够好 libuv : 开发node的过程中需要一个跨平台的事件库他们首选了libev但又要支持Windows故重新封装了一套*nix下用libev实现Windows下用IOCP实现 libuv 源码git下载
http://www.zqtcl.cn/news/605691/

相关文章:

  • 中国室内设计联盟网官网网站专题页优化
  • 设计模板图热狗网站关键词优化
  • 无锡网站开发公司重庆网站有哪些
  • 做网站找什么公司工作网站开发思维导图内容
  • 有人知道做网站吗?wordpress多站点cdn
  • 网站风格特点大型外包公司有哪些
  • 如何网站seo用asp做网站有哪控件
  • 网站建设需要哪些成本wordpress商城建站教程
  • 做网络的网站很重要吗网站认证费用
  • flash网站项目背景网页截图快捷键可拉动
  • 郑州企业建设网站北京企业网站模板建站开发
  • 宣传旅游网站建设的观点是什么公众号怎么推广和引流
  • 企业网站制作多少钱山西网络营销方案
  • 焦作住房和城乡建设局网站旅行网站模板
  • 男做基视频网站国家重点高新技术企业名单
  • 公司官方网站开发网站建设电子商务
  • seo网站优化系统搜索引擎优化排名案例
  • 郑州网站建设工作室网站建设全流程 知乎
  • 如何利用源码做网站外贸网站制作推广
  • 国内做网站哪家公司好免费查找资料的网站
  • 自己做的网站百度搜不到搭建网站seo
  • 奇墙网站建设高端网站建设公司联系电话
  • 宁波那家公司做网站好中企动力科技股份有限公司招聘
  • 水果网站推广网站首页静态好还是动态好
  • iis网站属性小程序源码无需服务器
  • 景区网站建设材料代运营有哪些套路坑
  • 六安电商网站建设哪家好有关做美食的网站
  • 卸载wordpress插件网店seo关键词
  • 金山网站制作赤城seo网站优化排名
  • 提供坪山网站建设深圳商城网站哪家做的好