gpt4 book ai didi

sockets - 套接字编程中select()中的“nfds”参数

转载 作者:行者123 更新时间:2023-12-03 11:57:50 25 4
gpt4 key购买 nike

我从来没有真正了解过此参数的含义,这有什么用?我还注意到WinSock2中忽略了此参数,为什么呢?
Unix系统使用此参数还是忽略它?

最佳答案

Windows的select()实现在内部使用链接列表,因此不需要使用nfds参数。

但是,在其他操作系统上,fd_set结构被实现为保存一个位数组(每个套接字一个位)。例如,以下是在MacOS/X下如何声明它(在sys/_types/_fd_def.h中):

typedef struct fd_set {
__int32_t fds_bits[__DARWIN_howmany(__DARWIN_FD_SETSIZE, __DARWIN_NFDBITS)];
} fd_set;

...并且为了做正确的事,select()调用将必须遍历数组中的位以查看它们包含的内容。通过为select()提供 nfds参数,我们告诉select()实现只需要遍历数组的前(nfds)位,而不必总是在每次调用时遍历整个数组。这使select()的效率比其他方式更高。

关于sockets - 套接字编程中select()中的“nfds”参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44468268/

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