gpt4 book ai didi

algorithm - 套接字库轮询与自定义轮询

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:29:45 24 4
gpt4 key购买 nike

所以我对套接字(在 c 中)有一些(可以说)的乐趣,然后我遇到了异步接收的问题。

如前所述hereselectpoll 对套接字进行线性搜索,但扩展性不是很好。然后我想,我可以做得更好,了解套接字的特定于应用程序的行为吗?

例如,如果

  • Xn:套接字 X 的第 n 个数据报到达时间(为简单起见,假设时间是离散的)
  • Pr(Xn = xn | Xn-1 = xn-1, X n-2 = xn-2 ...):给定Xn = xn的概率以前的到达时间

通过统计或假设或其他方式已知。然后我可以实现一种算法,以最大概率的顺序轮询套接字。

问题是,这是疯狂的尝试吗? poll/select 库是否有一些我无法从用户空间击败的优势?

编辑: 澄清一下,我并不是要复制 pollselect 的语义,我只是想要一种工作方式找到至少 一个 准备接收的套接字。
此外,存在诸如 epoll 之类的东西,我认为这很可能更好,但我想先寻找任何可能的替代方案。

最佳答案

Does the library poll/select have some advantage that I can't beat from user space?

C 库也在用户空间中运行,但它的 select()poll() 函数几乎可以肯定是系统调用的包装器(但细节因系统而异)系统)。他们包装单个系统调用(实际上他们这样做了)确实给了他们一个明显的优势,超过任何涉及多个系统调用的方案,比如我想你在头脑。系统调用的开销很高。

所有这些可能都没有实际意义,但是,如果您想要复制 select()poll() 的语义:具体来说,当它们返回时, 它们提供有关所有 已准备好文件的信息。为此,他们必须测试或以某种方式监视每个 指定文件,因此,您的假设替代品也必须如此。由于无论如何您都需要扫描每个文件,因此扫描它们的顺序并不重要;线性扫描可能是一个理想的选择,因为它的开销非常低。

关于algorithm - 套接字库轮询与自定义轮询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43811422/

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