gpt4 book ai didi

linux - 为什么需要使用 select 在服务器中设置客户端套接字 fd 是非阻塞的?

转载 作者:太空宇宙 更新时间:2023-11-04 04:58:52 25 4
gpt4 key购买 nike

大家好!我在实践中对选择模型有疑问。书中的一些内容告诉我有关在选择模型中将接收到的套接字 fd 设置为非阻塞。我不知道原因。就我而言,我可以通过 FD_ISSET(fd_all[i], fd_read_set) 知道客户端套接字 fd 是否可读。那么为什么我需要将客户端套接字 fd 设置为非阻塞呢?有人告诉我为什么吗?谢谢!

最佳答案

有时,在 select() 确定套接字可读和应用程序实际尝试从中读取数据之间,套接字会发生变化。因此,最安全的做法是使其成为非阻塞,这样您在尝试读取时就不会被挂起。

发生这种情况的一种可能的方式是,如果您有多个进程或线程都在同一个套接字上调用 select()。当数据到达时,它们都会返回并尝试读取它,但只有第一个会成功。

关于linux - 为什么需要使用 select 在服务器中设置客户端套接字 fd 是非阻塞的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39074397/

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