繁体   English   中英

从单个套接字的多个线程“发送到”

[英]"sendto" from multiple threads for a single socket

我有一个运行 UDP 服务器的应用程序,该服务器向其客户端发送相当多的数据(几百个)。 它不会不间断地发送数据,而是每隔几毫秒(例如 50 毫秒)发送一次。 重点是:发送数据的时候,一定要快。 不幸的是,对sendtosendmsg的调用可能会变得非常慢。

一个可能的解决方案是在多个线程上为同一个服务器套接字但不同的客户端调用这些函数。

不幸的是,性能的提高远没有预期的那么大(例如,对于 n 个线程,所需的时间远远没有除以 n)。 如果从多个线程为同一个服务器套接字调用sendto / sendmsg ,可能会有一些问题吗? 这可以避免吗?

(缓冲区和 kernel 参数已经调整,所以这应该不是问题)

非常感谢你

您可以尝试使用原始套接字发送数据报,您必须手动创建 UDP header,但您将绕过 UDP 堆栈处理,这可能会解决您遇到的延迟。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM