我正在使用 C++ 开发一个服务器,该服务器将通过 UDP 连接到多个客户端。我已经决定最好使用线程池来处理来自给定套接字的传入数据报。
那么,我的问题是,允许每个工作线程调用 sendto 在可伸缩性方面是否最好?他们应该在同一个插座上这样做还是最好使用不同的插座?所有流量都将通过一个端口。
从我准备好的情况来看,对 recvfrom 和 sendto 的调用似乎是原子的,我已经有一个专用线程来监听套接字(当前是非阻塞的,并使用调用来选择来确定套接字是否准备好从中读取)。
如果我要自己去,我可能会使用不同的套接字来发送和使用多个线程来这样做(假设所有操作都是有效的)。
不确定这会有多大帮助,但这是一般的想法: