【发布时间】:2012-12-28 09:16:07
【问题描述】:
我想编写一个简单的多人游戏作为我的 C++ 学习项目的一部分。
所以我想,既然我在做,我想正确地做它,而不是仅仅完成它。
如果我理解正确:Apache 使用 Thread-per-connection 架构,而 nginx 使用事件循环,然后为传入连接分配一个工作线程 [x]。我猜 nginx 更聪明,因为它支持更高的并发级别。对吧?
我也遇到过这个clever analogy,但我不确定它是否适用于我的情况。这个类比似乎也非常理想主义。我很少看到我的电脑以 100% 的 CPU 运行(即使打开了无数个 Chrome 选项卡,Photoshop 和其他不同时运行的东西)
另外,我遇到了一个 SO 帖子(它不知何故从我的历史中消失了),其中一个用户询问他们应该使用多少线程,其中一个答案是拥有大约 700 个甚至高达 10,000 个线程是完全可以接受的线程。不过,这个问题与 JVM 有关。
因此,让我们估计大约 5,000 名用户的虚构用户群。哪种方法应该是“最并发”的?
- 在单个线程中运行所有内容的反应器模式。
- 带有线程池的反应器模式(大约,您建议线程池应该有多大?
- 为每个连接创建一个线程,然后销毁连接关闭的线程。
我承认选项 2 听起来对我来说是最好的解决方案,但我对这一切都很陌生,所以我可能有点天真并遗漏了一些明显的缺陷。此外,这听起来可能很难实现。
PS:我正在考虑使用POCO C++ Libraries。建议任何替代库(如boost)对我来说很好。但是,许多人说 POCO 的库非常干净且易于理解。所以,我最好使用那个,这样我就可以了解我正在使用的如何。
【问题讨论】:
标签: c++ poco-libraries