我用C ++编写P2P程序,使程序在多个主机上运行,每个主机直接相互连接(即完整图形)。
我的问题是关于在这种情况下处理套接字时我应该考虑的因素。
我需要沟通不是瓶颈,并且有非常好的时间表现。我应该为每个连接使用单独的线程吗?还是某种无限循环?怎么样接受新的联系? (即accept()
)。无论是Linux还是Windows,Doit都有所不同?我还应该考虑哪些其他事项?
答案 0 :(得分:0)
我建议异步网络用于此类事情,boost::asio
和QtNetwork
就是很好的例子。他们使用系统相关的功能(如epoll
,iocp
,kqueue
和其他)占用0%CPU(而无限循环通常需要100%)。只要正确使用了库,性能就会很好。
我建议您阅读epoll
之类的内容,以了解它是如何运作的。
顺便说一句,这种方法可以使用任意数量的线程(甚至是单线程),因此您可以对其进行配置以提高性能。