gpt4 book ai didi

linux - 写入 TCP 套接字不断返回 EAGAIN

转载 作者:可可西里 更新时间:2023-11-01 02:38:58 26 4
gpt4 key购买 nike

我遇到这样一种情况,我有一个正在写入的 TCP 套接字(非阻塞),但在负载下它会进入不断返回 EAGAIN 的情况。我知道这是因为它停止了处理,我可以附加一个调试器并单步执行它。单步执行,写入调用返回一个错误,errno 每次都设置为 EAGAIN(它忙于等待 EAGAIN...忽略这是个坏主意:)

我的理解是,如果缓冲区已满,EAGAIN 应该只在写入时返回,但我不明白什么会阻止它耗尽和写入调用最终成功。

这是 Ubuntu,Linux 内核 3.19.0-47-generic。

想法?

最佳答案

阻止它耗尽的原因是同行的阅读速度不如您的写作速度。对等方的接收缓冲区已满,您的发送缓冲区已满,您无法写入。

it busy-waits on EAGAIN...ignore that this is a bad idea

我不能忽视这一点。这是个坏主意。您应该在这种特定情况下使用 select() 来告诉您套接字何时可写,而不是无意识地循环。

关于linux - 写入 TCP 套接字不断返回 EAGAIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36539580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com