gpt4 book ai didi

java - 我应该使用操作系统套接字缓冲区作为消息队列吗?

转载 作者:行者123 更新时间:2023-11-30 03:44:35 25 4
gpt4 key购买 nike

这个问题涉及一个 Java 应用程序的设计,用于从几十个 UDP 套接字读取和处理大量数据,但我认为它与其他语言和环境相关。

我见过像上面描述的那样的网络应用程序有专用的线程,用于尽快从套接字缓冲区读取数据,在应用程序内重新排队,然后在单独的线程中处理它。

将数据保留在套接字缓冲区中直到处理线程准备好接收下一条数据有什么问题吗?快速读取数据并在应用程序内重新排队有什么好处吗?

如果处理逻辑不够快,缓冲区就会填满。但是,如果处理逻辑太慢而无法处理入站数据,那么数据在哪里排队似乎并不重要。如果入站数据突然激增,套接字缓冲区应该足够大来处理。

最佳答案

网络堆栈中接收的 UDP 数据包的缓冲区大小是有限的。如果缓冲区已满,部分数据包将会丢失。

如果处理 UDP 数据包的软件知道它可能需要一些时间才能处理数据包,则尽快读取数据包是有意义的,从而释放网络堆栈缓冲区并实现您自己的缓冲区或数据包队列,可以将它们缓存在其中,直到处理资源实际可用。

关于java - 我应该使用操作系统套接字缓冲区作为消息队列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26060753/

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