unixaccept()函数两次返回相同的文件描述符

2023-12-24

我的多线程网络服务器程序有问题。

我有一个正在侦听新客户端连接的主线程。我使用 Linux epoll 来获取 I/O 事件通知。对于每个传入事件,我创建一个线程来接受新连接并为其分配一个 fd。在重负载下,可能会发生同一个 fd 被分配两次导致我的程序崩溃的情况。

我的问题是:系统如何重新分配一个仍被另一个线程使用的fd?

Thanks,


据推测,这里存在竞争条件 - 但如果没有看到您的代码,就很难诊断。

你最好accept在主线程上,然后将接受的套接字传递给新线程。

如果您将侦听套接字传递给新线程然后执行接受 - 您将遇到竞争条件。

欲了解更多信息,您可以查看这里:https://stackoverflow.com/a/4687952/516138 https://stackoverflow.com/a/4687952/516138

And this http://www.kegel.com/c10k.html是有关网络效率的良好背景(尽管可能有点过时)。

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

unixaccept()函数两次返回相同的文件描述符 的相关文章

  • Xamarin 测试记录器选项有错误。无法记录自动化测试

    选项 gt Xamarin gt Xamarin Test Recorder 中的所有设置都有错误 我的桌面上安装了 Visual Studio 2015 企业版 以及 Xamarin 和 Xamarin Test Recorder 插件
  • 如何准备sql语句并绑定参数?

    不幸的是 文档 http www sqlite org完全缺乏示例 这真的很奇怪 就好像它假设所有读者都是优秀的程序员一样 然而 我对C 并且无法真正从文档中弄清楚如何真正准备和执行语句 我喜欢它的实施方式PDO for PHP 通常 我只
  • C# 中输入按键

    我尝试了这段代码 private void textBox1 KeyPress object sender KeyPressEventArgs e if Convert ToInt32 e KeyChar 13 MessageBox Sho
  • 如何将 mat 转换为 array2d

    我为dlib http dlib net face landmark detection ex cpp html那里的面部地标代码使用 array2d 来获取图像 但我喜欢使用 Mat 读取图像并转换为 array2d 因为 dlib 仅支
  • C++ 中可以使用匿名类作为返回类型吗?

    有没有办法在 C 中使用匿名类作为返回类型 我用谷歌搜索这可能有效 struct Test fun 但是这段代码无法编译 错误信息是 新类型不能在返回类型中定义 其实代码没有任何意义 我只是想弄清楚匿名类是否可以用作C 中的返回类型 这是我
  • 为什么下面的重叠比较总是评估为 true

    我不明白为什么以下代码有警告 指出重叠比较始终评估为真 接下来的语句永远不会被执行 QVariant MainModel data const QModelIndex index int role const if index isVali
  • 仅针对某些异常类型中断

    我知道异常处理是一件非常重要的事情 我们在所有项目中都在这样做 主要原因是记录客户发生的错误 这工作正常 根本不是问题 但是 当我仍在使用 Visual Studio 编码和运行应用程序时 我根本不需要任何异常处理 我希望调试器正好停在应用
  • 如何修复此 YCrCb -> RBG 转换公式?

    我使用的公式来自这个问题 https stackoverflow com questions 8838481 kcvpixelformattype 420ypcbcr8biplanarfullrange frame to uiimage c
  • C# 中不区分大小写的替换不使用正则表达式?

    有没有一种方法可以在不使用 C 中的正则表达式的情况下对字符串进行不区分大小写的替换 像这样的东西 string x Hello x x Replace hello hello world 你可以尝试类似的东西 string str Hel
  • 是否可以在对Where 的调用中调用命名方法?

    我试图从 RedGate 的这本免费电子书中了解 Linq 的一些性能影响ftp support red gate com ebooks under the hood of net memory management part1 pdf f
  • 指向 VLA 的指针

    你可能知道 VLA 的优点和缺点 https stackoverflow com a 3082302 1606345在 C11 中它们是可选的 我认为使 VLA 成为可选的主要原因是 堆栈可能会爆炸 int arr n where n 10
  • Bazel:将编译标志添加到默认 C++ 工具链

    我想向默认的 C 工具链添加一些编译器和链接器标志 以便我构建的所有目标 本地或导入 共享它们 我知道可以定义我自己的工具链 但我不想这样做 因为它非常复杂且容易出错 理想情况下我想要这样的东西 cc toolchain cc defaul
  • VS C# 中的依赖地狱,找不到依赖项

    我创建了一个图表 C 库 我们称之为chartlibrary 它本身依赖于多个第三方 dll 文件 在另一个可执行项目中 我们称之为chartuser 我参考了chartlibrary项目 两个项目位于 Visual Studio 中的同一
  • C# SignalR 异常 - 连接在收到调用结果之前开始重新连接

    我正在开发 2 个应用程序 第一个是 C 控制台应用程序 另一个是 Asp net Web 应用程序 我正在使用 SignalR 连接两者 这是我的 C 控制台应用程序 客户端 public class RoboHub public sta
  • PowerShell 与 MongoDB C# 驱动程序方法不兼容?

    由 C 泛型引起的最新 MongoDB 驱动程序的问题 Cannot find an overload for GetCollection and the argument count 1 我可能可以使用其他没有泛型的 GetCollect
  • 从 cin 读取整数序列并将它们存储在向量中

    这就是我读取整数的方法std cin并将它们存储在向量中 int number vector
  • 如何在RcppParallel中调用用户定义的函数?

    受到文章的启发http gallery rcpp org articles parallel distance matrix http gallery rcpp org articles parallel distance matrix 我
  • 没有 FPU 的处理器中的浮点计算

    是否可以在没有浮点单元的嵌入式处理器中执行浮点运算 是的 您只需要在软件中完成即可 你的编译器可能会提供支持 http gcc gnu org onlinedocs gccint Soft float library routines ht
  • 为什么 getch 不可移植?

    是什么使得 getch 本质上无法作为标准 C 函数包含在内 对于控制台界面来说 它是如此直观和优雅 如果没有它 要求输入单个字符总是会产生误导 因为用户可以输入多个键 更糟糕的是 您经常需要确保在读取控制台输入后清除标准输入 这甚至不是作
  • 如何编写完全可移植的 4 字节字符常量的编译时初始化

    遗留 代码大致如下所示 define MAKEID a b c d UInt32 a lt lt 24 UInt32 b lt lt 16 UInt32 c lt lt 8 UInt32 d define ID FORM MAKEID F

随机推荐

  • Android J2ME 或 Java SE 中使用的是哪个版本的 Java?

    Android J2ME 或 Java SE 中使用的是哪个版本的 Java 每个人都在这里 但让我稍微澄清一下整个过程 它是如何工作的 我们使用标准 J2SE 发行版中的普通 Java 编译器并生成 class 文件 也称为 Java V
  • 如何在 ASP.NET MVC4 表中执行简单的多项选择

    这是我的观点 model Affiliate div class box paint color 16 div class title h4 i class icon tasks i span Model CompanyName s Com
  • 以十六进制编码/解码字符串并返回

    给定一个可能包含任意字符 包括unicode字符 的字符串 如何将这个字符串转换为十六进制表示 然后反转得到这个字符串的十六进制 Use pack and unpack function hex2str hex return pack H
  • 在lua中表示unichar的方式是什么

    如果我需要以下 python 值 unicode char 0 gt gt gt unichr 0 u x00 我如何在Lua中定义它 没有一个 Lua 没有 Unicode 值的概念 Lua没有Unicode的概念at all 所有Lua
  • 使用 Java 创建 .eml(电子邮件)文件

    有人知道该怎么做吗 我获取了电子邮件的所有信息 正文 主题 发件人 收件人 抄送 密件抄送 并且需要从中生成 eml 文件 您可以使用以下代码创建 eml 文件 它可以与雷鸟以及其他电子邮件客户端一起正常工作 public static v
  • 如何从 Intellij IDEA 访问 cassandra 数据库

    我在2018年10月16日安装了intellij idea 2018 2 5 我正在尝试添加到面板 数据库 cassandra 为此 我转到 Intellij 中的 数据源和驱动程序 设置并添加 cassandra 的驱动程序 gt 图片来
  • 捕获图像,上传到 Firebase 并检索 Java Android Studio

    如果这可能是一个有简单解决方案的问题 我感到非常抱歉 我想做什么 从按钮捕获图像 将该图像上传到 Firebase 存储 在 ImageView 中检索该图像 到目前为止我遇到了什么麻烦 拍照 但当我单击勾号时崩溃 因此 没有任何内容被上传
  • 如何在黑莓手机中使用相机扫描图像?

    我已经开始了一个项目 我想在其中实现二维码扫描功能 举个例子 android 中的 ZXing 我想为黑莓操作系统 6 及更高版本实现 我想使用相机扫描实时图像 是否可以 如果是的话 那怎么可能呢 您必须使用条形码 API 它是针对 OS
  • 如何在 GAE 应用程序中执行异步 api 请求?

    我正在开发一个基于 GAE 和 python 2 7 13 的应用程序 我想做的是在处理程序内进行一堆异步 API 调用 像这样的东西 class MakeRequests webapp2 RequestHandler def post s
  • 根据页面位置更改背景颜色

    我只想根据滚动更改背景颜色 例如从红到蓝 该代码有效 但如何将灰色更改为颜色 http fiddle jshell net schmudde ffk6phq0 http fiddle jshell net schmudde ffk6phq0
  • 扩展图像字段以允许 pdf ( django )

    我的表单中有 ImageField 正如我发现的 它使用枕头来验证该文件实际上是一个图像 这部分很棒 但我也需要在此表单字段中允许 pdf 所以它应该检查文件是否是图像 如果不是 则检查它是否是pdf 然后加载并存储 如果 pdf 检查能够
  • 查找特定列中最后一行的更有效方法?

    我正在编写一个应用程序 它将把列从一张纸导入到另一张纸上 getLastRow 方法仅适用于整个工作表 但不能用于获取列的最后一行 存在请求此功能的问题 我在 Google Script Examples 的人员的 2D Array 库的帮
  • 将资源转换为 byte[]

    我在将图像资源转换为 byte 时遇到问题 例如 我有以下资源 pack application AppName component Assets Images sampleimage jpg 在我的程序中 如何将其转换为 byte 我尝试
  • 页面底部固定 div 停在给定位置的问题

    我们需要一个位于页面底部的页脚工具栏 并在页面滚动到某个区域下方时粘在该区域上 我们使用以下脚本实现了这一点 固定 div 位于页面底部并停止在给定位置 https stackoverflow com questions 5141425 f
  • 在 R 中绘制巨大的数据文件?

    我有一个大约有 2000 万行的输入文件 文件的大小约为1 2 G 无论如何我可以在R中绘制数据 有些列有类别 其中大多数是数字 我已经尝试使用大约 800K 行的一小部分输入文件的绘图脚本 但即使我有大约 8G 的 RAM 我似乎也无法绘
  • Java Swing 将 JPanel 添加到 JPanel

    情况 我目前正在尝试使用 Java 的 Swing 构建 2D 游戏 为此 我有我的主课Puzzle这是子类化JFrame 在我的框架中 我添加了我的主要内容JPanel它由几个组成JPanel添加在一起 每个都是一个新的部分 EDIT 2
  • 如何将 stdout 的输出转换为 golang 中的字符串

    我有以下代码 它将数据从 stdout 输出到文件 cmd exec Command ls lh outfile err os Create out txt if err nil panic err defer outfile Close
  • 最近的 Ubuntu 版本中有 libsresample 吗?

    我想知道哪个软件包涵盖了最新 Ubuntu 版本的 libswresample 也许还有早期版本 希望也包括 Debian 它完全被覆盖了吗 如果没有 我应该使用什么其他库来重新采样音频 最好是让它在任何地方都可以工作 即该库在任何地方都可
  • 将变量传递给 Flask WTForm

    我想使用从路由传入的默认值来执行查询选择字段 我不知道如何将变量从 View 传递到 Form 类 class transactionsForm Form loan id QuerySelectField trans id validato
  • unixaccept()函数两次返回相同的文件描述符

    我的多线程网络服务器程序有问题 我有一个正在侦听新客户端连接的主线程 我使用 Linux epoll 来获取 I O 事件通知 对于每个传入事件 我创建一个线程来接受新连接并为其分配一个 fd 在重负载下 可能会发生同一个 fd 被分配两次