select poll epoll iocp kqueue

2023-10-29

为什么epoll,kqueue比select高级? 

答案是,他们无轮询。因为他们用callback取代了。想想看,当套接字比较多的时候,每次select()都要通过遍历FD_SETSIZE个Socket来完成调度,不管哪个Socket是活跃的,都遍历一遍。这会浪费很多CPU时间。如果能给套接字注册某个回调函数,当他们活跃时,自动完成相关操作,那就避免了轮询,这正是epoll与kqueue做的。

windows or *nix (IOCP or kqueue/epoll)?

诚然,Windows的IOCP非常出色,目前很少有支持asynchronous I/O的系统,但是由于其系统本身的局限性,大型服务器还是在UNIX下。而且正如上面所述,kqueue/epoll 与 IOCP相比,就是多了一层从内核copy数据到应用层的阻塞,从而不能算作asynchronous I/O类。但是,这层小小的阻塞无足轻重,kqueue与epoll已经做得很优秀了。

实际上,不管是哪种模型,都可以抽象一层出来,提供一致的接口,广为人知的有ACE,Libevent这些,他们都是跨平台的,而且他们自动选择最优的I/O复用机制,用户只需调用接口即可。说到这里又得说说2个设计模式,Reactor and Proactor。有一篇经典文章http://www.artima.com/articles/io_design_patterns.html值得阅读,Libevent是Reactor模型,ACE提供Proactor模型。实际都是对各种I/O复用机制的封装。

Java nio包是什么I/O机制?

我曾天真的认为java nio封装的是IOCP。。现在可以确定,目前的java本质是select()模型,可以检查/jre/bin/nio.dll得知。至于java服务器为什么效率还不错。。我也不得而知,可能是设计得比较好吧。。-_-。

总结一些重点:

  1. 只有IOCP是asynchronous I/O,其他机制或多或少都会有一点阻塞。
  2. select低效是因为每次它都需要轮询。但低效也是相对的,视情况而定,也可通过良好的设计改善
  3. epoll, kqueue是Reacor模式,IOCP是Proactor模式。
  4. java nio包是select模型。。



http://blog.csdn.net/shallwake/article/details/5265287


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

select poll epoll iocp kqueue 的相关文章

  • 虚拟机连不上网解决办法,以及出现Ubuntu connect: Network is unreachable

    虚拟机连不上网解决办法 xff0c 以及出现Ubuntu connect Network is unreachable 问题来源具体过程 问题来源 出现了Ubuntu connect Network is unreachable这个问题 x
  • 子网掩码、IP地址、网络号、网络位、主机地址范围

    子网掩码 ip地址 主机号 网络号 网络地址 广播地址几句话掌握子网掩码 ip地址 主机号 网络号 网络地址 广播地址 191 172 16 10 33 27 中的 27也就是说子网掩码是255 255 255 224 即27个全1 2 从
  • select poll epoll iocp kqueue

    为什么epoll kqueue比select高级 答案是 他们无轮询 因为他们用callback取代了 想想看 当套接字比较多的时候 每次select 都要通过遍历FD SETSIZE个Socket来完成调度 不管哪个Socket是活跃的
  • services端口列表(from Nmap)

    This list of services is from the Nmap security scanner http www insecure org nmap For a HUGE list of services including
  • 【问题解决】Ubuntu 12.04 网络连接有规律的时断时续

    问题描述 也不知道是哪里乱点什么了 有一天ubuntu12 04 的网络就突然不能用了 然后我就网上查找解决方法 一查才知道linux下面的网络连接有两种方式 一种是一种是network manager 另一种是通过 etc network
  • 用QT实现同步调用WebService

    QT提供了QNetworkAccessManager来访问 QT帮助文档里有这么一段 QNetworkAccessManager manager new QNetworkAccessManager this connect manager
  • openssl生成椭圆曲线的私钥是如何做到每次不同的?

    目录 例子 排查 随机算法 小结 例子 生成一个私钥只需要3步 1 获得指定曲线的group 如比特币的secp256k1 2 group和key绑定 3 用key来生成私钥 先上一段代码例子 key1 EC KEY new if key1
  • TCP/IP详解学习笔记

    TCP IP详解学习笔记 http blog csdn net goodboy1881 category 204448 aspx PageNumber 2 TCP IP详解学习笔记 3 IP协议 ARP协议 RARP协议 摘要 TCP IP
  • Zebra基本配置

    前言 Zebra是一个路由软件包 提供基于TCP IP路由服务 支持RIPv1 RIPv2 RIPng OSPFv2 OSPFv3 BGP 4 和 BGP 4 等众多路由协议 Zebra还支持BGP特性路由反射器 Route Reflect
  • RHEL 6.1 KVM虚拟机桥接物理机网络

    RHEL6 1 KVM虚拟机桥接物理机网络 一 KVM默认网络配置 1 kvm上网有两种配置 a NAT 支持主机与虚拟机的互访 也支持虚拟机访问互联网 但不支持外界访问虚拟机 b bridge 桥接 可以使用虚拟机成为网络中具有独立IP的
  • 对于Linux中errno使用的问题

    最近在网络编程使用的过程中 发现errno会经常使用 因此决定在此做个留用 以备以后使用 虽然errno是非线程安全的 但是可以通过几种机制保证其安全 最近在使用的过程中获得了errno 程序无法执行 也不知道如何解决问题 因此 理解每一个
  • 0.0.0.0,localhost,127.0.0.0的区别

    一 0 0 0 0 不同场景不同意思 在服务器中 0 0 0 0表示本机上的任意ip地址 比如本机有内外网两个ip 那么当服务A开通0 0 0 0的访问后 通过两个ip都可以访问服务A 比如 3306端口监听在127 0 0 1 只有本机客
  • Linux System Network Management Manual

    最近读得一本好书 名字叫做 Linux系统管理与网络管理 为了加深理解与学习 现将书名与目录摘录如下 后续会根据书中的内容做一些整理 I 基础篇 1 Linux系统简介 2 Linux系统安装 3 图形桌面系统管理 4 命令行界面 II 系
  • Android 网络地址之实现检查主机名的功能

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到网站 效果演示 实现步骤 一 布局页面activity inet address xml
  • pppoe 拨号过程

    PPPoE 拔号过程 发现阶段解析 文档编号 834 浏览 14295 评分 73 最后更新于 2011 02 11 PPPoE拔号的发现阶段 Discovery PPPoE的发现阶段一共分为 4步 分别是 PADI PPPoE Activ
  • 网络h

    注 所有标题带h的博客不保证准确性和正确性 写这篇博客原因是因为网络知识学了又忘 忘又学 翻来覆去 所以做个笔记 正如上文注明 此篇博客所写内容不够准确和专业 甚至不正确 只是为了便于理解记忆 概念 以太网 ethernet 双绞线 同轴线
  • OSI七层模型与TCP/IP五层模型

    一 OSI参考模型 今天我们先学习一下以太网最基本也是重要的知识 OSI参考模型 1 OSI的来源 OSI Open System Interconnect 即开放式系统互联 一般都叫OSI参考模型 是ISO 国际标准化组织 组织在1985
  • linux下libpcap抓包分析

    linux下libpcap抓包分析 一 首先下载libpcap包http www tcpdump org latest release 然后安装 安装完成后进入安装根目录的tests文件夹 编译运行findalldevstest c 编译时
  • Android 网络管理

    系统中对网络的判断和选在是在Connectivityervice这个服务中来处理的 在系统启动的时候会启动这个系统服务 系统启动完毕后 ConnectivityService在系统启动的时候就启动了 在android内部 用framewor
  • 网络基础面试题(二)

    11 什么是网桥 防火墙的端口防护是指什么 网桥是一种网络设备 用于连接两个或多个局域网 LAN 并转发数据包 它能够根据MAC地址来识别和转发数据 提高网络的传输效率和安全性 防火墙的端口防护是指对防火墙上的各个端口进行保护和限制 只允许

随机推荐

  • 鸿蒙os和ios区别,华为鸿蒙OS和iOS以及安卓的区别到底在哪,一张图总结

    华为鸿蒙OS从2019年就在说了 很多人不了解什么是鸿蒙 也根本不知道这个OS和其它产品有什么区别 特别是未来华为想靠鸿蒙OS做什么 为什么华为愿意开源 为什么华为不像苹果一样做一个封闭的生态让自家产品的体验更好 今天借着下面这张图跟大家聊
  • 算法:跳跃游戏(js)

    题目 力扣 思路 试想一下 若从第三位置可以跳到第五位置 那只要前面有一个点能跳到第三位置即可说明整体能跳到第五位置 终点为最后一个点开始 看终点的前面是否存在一个点能跳到终点 若有这个点 此时终点为这个点 继续同样逻辑 代码 var ca
  • unsigned char和signed char型变量学习

    首先考虑下面代码输出什么 cpp view plain copy 1 include
  • Nginx 使用 HTTPS(准备证书和私钥)

    文章目录 Nginx生成自签名证书和配置Nginx HTTPS 准备证书和私钥 准备证书和私钥 Nginx生成自签名证书和配置Nginx HTTPS 准备证书和私钥 准备证书和私钥 生成私钥 openssl genrsa des3 out
  • 网络RJ45接口详解

    RJ45 简介 图 1 RJ45模块 RJ45模块用于实现PHY之间的互连 包括PHY芯片经信号变压器与RJ45接口相连 如图 1所示 RJ45连接器由插头和插座组成 RJ45插头又称水晶头 如图 3 10所示 这两种元件组成的连接器连接于
  • mmdetection训练数据遇到的问题

    1 Permission denied bash compile sh Permission denied 没有操作权限 改为赋予最高权限 777 chmod 777 compile sh 2 cuda问题 unable to execut
  • 无锁同步-C++11之Atomic和CAS

    首页 联系 订阅 无锁同步 C 11之Atomic和CAS 1 概要 本文是无锁同步系列文章的第一篇 主要探讨C 11中的Atomic 我们知道在C 11中引入了mutex和方便优雅的lock guard 但是有时候我们想要的是性能更高的无
  • 合并单元格

    protected void gridView PreRender object sender EventArgs e MergeRows gridView 合並單元格 public static void MergeRows GridVi
  • QT 子线程 更改UI

    一 问题原因 QT和Android类似 不能在子线程中直接更新UI 否则会有崩溃 二 实现方式 方式有几种 我这里只说一种 使用 信号机制 三 原理 原理其实是信号槽机制 槽连接方式 有以下四种 如果未设置默认 auto 即可跨线程通信 D
  • 蓝桥杯单片机(十三)AT24C02(EEPROM)

    AT24C02是一个2K位串行CMOS E2PROM 内部含有256个8位字节 CATALYST公司的先进CMOS技术实质上减少了器件的功耗 AT24C02有一个16字节页写缓冲器 该器件通过IIC总线接口进行操作 有一个专门的写保护功能
  • TL431应用电路与LTspice仿真

    TL431应用电路与LTspice仿真 文章目录 TL431应用电路 简介 应用电路1 稳压源 应用电路2 电压比较器 应用电路3 隔离型反馈电路 LTspice仿真 模型导入和使用 spice模型 原理图符号 放置模型 暂态仿真 DC扫描
  • 最大公约数,最小公倍数,素数等问题

    1 两个数的 最小公倍数 等于两个数的乘积除以最大公约数 scm a b a b gcd a b 所以主要是最大公约数问题 gcd 问题 辗转相除法 依据就是欧几里得定理 gcd a b gcd b a b def gcd a b whil
  • Docker三剑客——Compose

    前面介绍了Docker三剑客中的两个 今天我们介绍一下三剑客中的最后一个 docker compose 接下来的内容 我们还是从五个方面来讲解 主要包括如下 Compose简介 Compose安装与卸载 Compose常用命令 Compos
  • LinearEyeDepth 推导过程

    转载自 冯乐乐的 Unity Shader 入门精要 获取深度和法线纹理 虽然在Unity里获取深度和法线纹理的代码非常简单 但是我们有必要在这之前首先了解它们背后的实现原理 深度纹理实际上就是一张渲染纹理 只不过它里面存储的像素值不是颜色
  • 谈谈前华为荣耀软件测试工程师校招面试(已拿到offer)

    截止到现在 一共参加了2次笔试 2次面试 具体时间参照截图 机试 一共三道编程题 共500分好像 全对了一道 就是提交后通过测试 另外两道写完了 但是提交测试没通过 性格测试 就正常选了 保证前后一致啊 因为前面问到的后面还会有 不然会提示
  • 英语学习频道

    1 美国在线 www aol com 2 美国白宫 www whitehouse gov 3 路透网 中文 http cn reuters com 英文 http www reuters com 4 环球网 中文 http www huan
  • JS实现贪吃蛇

    JS实现贪吃蛇 1 结构 创建一个盒子box作为蛇的身体 当前盒子中只有一个子元素 代表此时蛇的长度为1 在创建一个盒子food作为贪吃蛇的食物 div div div div div div 2 CSS 设置蛇和食物的样式 这里注意蛇和食
  • 一文带你理解@RefreshScope注解实现动态刷新原理

    概述 RefeshScope这个注解想必大家都用过 在微服务配置中心的场景下经常出现 他可以用来刷新Bean中的属性配置 那大家对他的实现原理了解吗 它为什么可以做到动态刷新呢 注解的作用 RefreshScope注解是Spring Clo
  • linux 服务器的node 安装

    1 先下载 node 当然下载的是符合linux 系统的 我当时下载的是 node v16 18 0 linux x64 tar xz 2 把 node v16 18 0 linux x64 tar xz 放到linux 服务器上 我当时是
  • select poll epoll iocp kqueue

    为什么epoll kqueue比select高级 答案是 他们无轮询 因为他们用callback取代了 想想看 当套接字比较多的时候 每次select 都要通过遍历FD SETSIZE个Socket来完成调度 不管哪个Socket是活跃的