为什么在 epoll 中推荐使用非阻塞套接字

2023-12-31

我正在尝试学习如何将 epoll() 用于 tcp 服务器应用程序,因为我期望有很多连接。 我尝试检查示例和教程,他们总是建议使用/设置在 epoll() 中添加的套接字为非阻塞套接字。为什么?


对于级别触发的 epoll,非阻塞套接字可以帮助最大限度地减少 epoll_wait() 调用,这是一个优化问题。

对于边缘触发的 epoll,您必须使用非阻塞套接字并调用 read() 或 write() 直到它们返回 EWOULDBLOCK。如果不这样做,您可能会错过内核通知。

您可以在这里找到详细的答案:https://eklitzke.org/blocking-io-nonblocking-io-and-epoll https://eklitzke.org/blocking-io-nonblocking-io-and-epoll

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

为什么在 epoll 中推荐使用非阻塞套接字 的相关文章

随机推荐

  • 如何创建交互式选择?

    我想在Python中创建一个 交互式选择 不确定我的措辞是否正确 请看下面的示例 让用户按向上和向下键选择一个选项并返回确认它 然后继续脚本 终端中的示例输出如下所示 python script py Please select an op
  • MVC 5 未将名为“action”的参数设置为传递的值

    我有以下方法 public void Service int id string action 当我将其作为网址时 http localhost home service id 24 action updated 无论我传递给参数什么 MV
  • C# 中将 char 转换为 int

    我在 C 中有一个 char char foo 2 现在我想把 2 变成一个 int 我发现 Convert ToInt32 返回 char 的实际十进制值 而不是数字 2 以下内容将起作用 int bar Convert ToInt32
  • Android EditText 监听光标位置变化

    我有一个包含 EditText 的对话框 EditText 在创建时已被填充 当用户将光标放在文本的某些部分上或附近时 将会弹出一个 Toast 我的问题是监听光标位置的变化 其他post http stackoverflow com qu
  • 通过 Dagger 将演示者注入到 Activity 中

    我想知道如何使用代码在 Activity 中注入 Presenter 以下是详细信息 以下是错误信息 Error 12 46 error cannot find symbol class DaggerCategoryPresenterCom
  • 为什么 Twitter 和 Google API 文档不对 URL 中的 & 符号进行编码?

    I 已读过 https stackoverflow com questions 3705591 do i encode ampersands in a href我应该将我的 符号编码为 amp 在 HTML 中 然而numerous来自受人
  • 如何使用 Eclipse (CDT) 将现有项目用作新项目的模板?

    我想使用我的一个项目 其中所有内容都配置良好 以及如何开始作为 模板 工作 以便使用 CDT 在 eclipse 中创建新项目 因此可以节省配置和编写工作项目的时间 因为它已经在其他地方制作了 有什么提示吗 您始终可以右键单击该项目 选择
  • 在 React Native 中将 props 传递到外部样式表?

    我是 React 和 React Native 的新手 目前 对于每个组件 我将代码分成两个单独的文件 index js对于所有 React 代码 以及 styles js对于样式表 有没有办法将 props 传递到外部样式表中 例子 in
  • 与重复的组合

    我正在使用 Mathematica 7 和 Combinatorica 包函数 我可以从元素列表中获取特定数量的所有组合 其中顺序无关紧要并且没有重复 例如 in KSubsets a b c d 3 out a b c a b d a c
  • 如何检查仅当鼠标位于特定位置时才存在的元素

    如果您需要检查元素的悬停状态 可以按照描述完成here https stackoverflow com questions 17602611 inspect a hover element问题是如果移动鼠标就会失去状态 就我而言 它的 ja
  • 绑定Vuejs的两个组件

    如何完美地组织两个 vuejs 组件之间的数据和交互 例如 1 我有一个组件 item v for item in items a item name 2 和第二个 card v for item in items div content
  • 如何停靠弹出窗口?

    我有一个包含 3 个主要小部件的应用程序 我也有一个弹出窗口QDockWidget 我正在尝试获取QDockWidget停靠到底部小部件的右半部分 但正如您在下图中看到的 我可以停靠窗口的唯一位置是应用程序的边缘 我怎样才能做到这一点QDo
  • 闪亮的传单地图弹出窗口正在提取错误的数据

    由于某种原因 Shiny传单应用程序上分配给多边形的弹出窗口提取了应分配给多边形的错误信息 似乎多边形已放置在地图上 然后以不同的顺序分配多边形属性 任何想法将不胜感激 server lt function input output ses
  • Google Cloud Load Balancer - 子域重定向到存储桶中的特定文件夹

    目前我们有以下需求 每个用户都可以在 Google 存储桶下拥有自己的子域和文件夹 其中包含应通过此子域提供的内容 例如 domain user1 example com gt bucket example com user1 index
  • 如何将表中的某些列复制到另一个mysql

    我有两张桌子 例如 table 1 A B C D E F G H I J table 2 A C D E G H J K L M N O P 我必须将一些列从表 2 复制到表 1 我尝试的是 INSERT INTO table 1 C D
  • json_encode PHP 对象及其受保护的属性

    有什么方法可以设置 PHP 对象 以便当我尝试将它们转换为 JSON 时 它们所有受保护的属性都会显示出来 我读过其他答案建议我添加一个toJson 函数到对象 但这可能并不能真正帮助我很多 在大多数情况下 我有一个对象数组 并对数组本身执
  • 在 Windows 窗体上的窗口一侧添加按钮

    我想在 C 上的 Windows 窗体一侧添加按钮 在外面 当窗口移动时 按钮应该一起移动 例如 我看到两个选择 要么将按钮放在单独的表单中 然后通过编码将两个表单粘在一起Move有可能Resize events 或者更简单 制作表格透明的
  • 在新行中添加 max(value)+1,这会是一个问题吗?

    在 SQL Server 表中 我有以下两列 RowId 主键 数字 标识列和自动插入 MailId 非键 数字 非标识 非自动插入 邮件 ID 可以重复 如果是新的 MailId 我将检查 max MailId 1 并将其插入新行中 如果
  • 如何在gridview中间歇性地展示横幅广告

    I am developing an android app that will have a screen similar to the following image 请注意单元格之间的横幅广告 由于 GridView 不支持这种跨列
  • 为什么在 epoll 中推荐使用非阻塞套接字

    我正在尝试学习如何将 epoll 用于 tcp 服务器应用程序 因为我期望有很多连接 我尝试检查示例和教程 他们总是建议使用 设置在 epoll 中添加的套接字为非阻塞套接字 为什么 对于级别触发的 epoll 非阻塞套接字可以帮助最大限度