我正在处理一个使用TCP协议的项目,可能需要同时处理数百个或更多连接。
因此,我不确定应该使用什么方法来收集和发送这些数据。
我想知道是否在这里适用于“更多线程=更高性能”的原则。
我怀疑的原因是因为所有数据仍然必须通过网络连接传输,而大多数设备一次只有1个活动连接。另外,我知道重复的上下文切换也会降低性能。
但是,我从其他来源看到了建议使用多线程确实可以将网络性能扩展到一定程度,如果是这样,为什么呢?
目前,我正在使用非Boost版本的ASIO来处理网络。
感谢您提供的任何帮助。
我正在处理一个使用TCP协议的项目,可能需要同时处理数百个或更多连接。
因此,我不确定应该使用什么方法来收集和发送这些数据。
我想知道是否在这里适用于“更多线程=更高性能”的原则。
我怀疑的原因是因为所有数据仍然必须通过网络连接传输,而大多数设备一次只有1个活动连接。另外,我知道重复的上下文切换也会降低性能。
但是,我从其他来源看到了建议使用多线程确实可以将网络性能扩展到一定程度,如果是这样,为什么呢?
目前,我正在使用非Boost版本的ASIO来处理网络。
感谢您提供的任何帮助。
你希望拥有与CPU核心数量相当的线程,包括超线程。不要多于这个数量。
每个线程处理一组套接字。这样,你可以最大限度地提高CPU并行性,但减少开销。
如果你真的需要处理上百个连接且需要低延迟,你应该考虑使用UDP,其中一个单独的套接字可以从许多远程地址接收。但是你必须自己实现可靠性。尽管如此,这是多人游戏服务器通常运行的方式,而且有很好的原因。