network
varyall
这个作者很懒,什么都没留下…
展开
-
select、poll、epoll
因为实际需要所致,我们不得不考虑在现有的开源/商用的应用服务器之外开发一个,有性能要求、有并发要求的服务端应用,从技术要求的角度来分析一下,用Java实现这件事情我们可能关注的知识层面。 在整体上,可能需要我们从下面几个层面出发来考虑: 1.在硬件和操作系统层面:为什么需要关注这两个方面的知识,因为Java并没有自己的线程,使用的也是OS中的IO,所以我们不得不去了解系统在不同的硬件、转载 2015-11-11 00:14:47 · 405 阅读 · 0 评论 -
select poll epoll iocp kqueue
为什么epoll,kqueue比select高级? 答案是,他们无轮询。因为他们用callback取代了。想想看,当套接字比较多的时候,每次select()都要通过遍历FD_SETSIZE个Socket来完成调度,不管哪个Socket是活跃的,都遍历一遍。这会浪费很多CPU时间。如果能给套接字注册某个回调函数,当他们活跃时,自动完成相关操作,那就避免了轮询,这正是epoll与kqueu转载 2015-11-11 00:13:47 · 593 阅读 · 0 评论 -
select,poll,epoll的归纳总结区分
Select、Poll与Epoll比较 以下资料都是来自网上搜集整理。引用源详见文章末尾。 1 Select、Poll与Epoll简介 Select select本质上是通过设置或者检查存放fd标志位的数据结构来进行下一步处理。这样所带来的缺点是: 1 单个进程可监视的fd数量被限制 2 需要维护一个用来存放大量fd的数据转载 2015-11-11 00:21:31 · 487 阅读 · 0 评论 -
开源C/C++网络库比较 ace &&bosst &&libEvent
ACE是一个大型的中间件产品,代码20万行左右,过于宏大,一堆的设计模式,架构了一层又一层,使用的时候, 要根据情况,看你从那一层来进行使用。 在开源的C/C++网络库中, 常用的就那么几个, 在业界知名度最高的, 应该是ACE了, 不过是个重量级的大家伙, 轻量级的有libevent, libev, 还有 Boost的ASIO。 ACE是一个大型的中间件产品,代码20万行左右转载 2015-11-22 15:29:29 · 2125 阅读 · 0 评论 -
阻塞、非阻塞、异步、同步以及select/poll和epoll
针对IO,总是涉及到阻塞、非阻塞、异步、同步以及select/poll和epoll的一些描述,那么这些东西到底是什么,有什么差异? 一般来讲一个IO分为两个阶段: 等待数据到达把数据从内核空间拷贝到用户空间 现在假设一个进程/线程A,试图进行一次IO操作。 A发出IO请求,两种情况: 1)立即返回 2)由于数据未准备好,需要等待,让出CPU给别的线程,自转载 2015-12-07 14:06:22 · 409 阅读 · 0 评论