2

我正在使用 C++ 开发一个服务器,该服务器将通过 UDP 连接到多个客户端。我已经决定最好使用线程池来处理来自给定套接字的传入数据报。

那么,我的问题是,允许每个工作线程调用 sendto 在可伸缩性方面是否最好?他们应该在同一个插座上这样做还是最好使用不同的插座?所有流量都将通过一个端口。

从我准备好的情况来看,对 recvfrom 和 sendto 的调用似乎是原子的,我已经有一个专用线程来监听套接字(当前是非阻塞的,并使用调用来选择来确定套接字是否准备好从中读取)。

如果我要自己去,我可能会使用不同的套接字来发送和使用多个线程来这样做(假设所有操作都是有效的)。

不确定这会有多大帮助,但这是一般的想法: 在此处输入图像描述

4

1 回答 1

1

对多个线程使用多个 UDP 套接字没有任何好处,只要它们是非阻塞的,并且使用单个绑定的 UDP 套接字可以更好地映射到您声明的要求。这是实现无状态的、面向数据报的协议的一部分乐趣。

这是否解决/确认您的问题?

于 2012-11-24T00:22:46.287 回答