使用c ++中的线程池服务器模型进行套接字编程

时间:2012-11-23 20:48:17

标签: c++ sockets threadpool

我在c ++服务器上工作,通过UDP连接到众多客户端。我已经决定一个线程池最好处理来自给定套接字的传入数据报。

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

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

如果我按照自己的意愿行事,我可能会使用不同的套接字来发送和使用多个线程(假设所有操作都有效)。

不确定这会有多大帮助,但这是一般的想法: enter image description here

1 个答案:

答案 0 :(得分:1)

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

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