gpt4 book ai didi

c++ - 在 linux 中调用 socket.close 后 socket.read_some 需要很长时间才能返回

转载 作者:可可西里 更新时间:2023-11-01 02:33:53 24 4
gpt4 key购买 nike

我将 Boost.Asio 用作简单的套接字库。

当我打开一个套接字时,我创建了一个线程,该线程不断读取该套接字,并在套接字关闭或发生其他一些错误时返回。

while((read = socket->read_some(buf, ec)) != 0) {
// deal with bytes read
}

此代码在 Windows 和 Mac 上运行良好。然而,对于 Linux,当从主线程关闭套接字时,socket::read_some 需要很长时间才能返回 - 我发现它超过 2 分钟。

我可以做些什么来改进它吗?

最佳答案

如果你愿意cancel-ability , 使用异步套接字。不要使用同步方法,例如 read_some。这已经在 asio-users 邮件列表上进行了无限次讨论。还有一个 ticket在 boost bug tracker 上讨论它。

另见 my answer类似的问题。

关于c++ - 在 linux 中调用 socket.close 后 socket.read_some 需要很长时间才能返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5944797/

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