gpt4 book ai didi

C++ 服务器 - 线程还是非线程?

转载 作者:行者123 更新时间:2023-11-30 02:58:57 25 4
gpt4 key购买 nike

我正在开发一个用 C++ 编写的游戏服务器,我正在尝试决定要使用多少线程以及线程化哪些任务。基本的服务器框架由键盘 I/O 和输出到控制台、接受传入连接、发送传出连接以及执行游戏“内容”组成。

我想知道哪些事情应该单独讨论。每个连接都应该有自己的线程吗?我知道这是可变的,它取决于项目左右,但我希望它支持相当数量的玩家(如果可能的话,在数百人左右)。

最佳答案

标准答案应该始终是:首先尝试最简单的方法,只有在简单方法不够好时才寻找提高性能的方法。然而,重新构建大型 C++ 程序可能是一种痛苦的经历,因此提前对性能进行一些猜测可能是合适的。

理论上,数百个线程在现代机器上可能没问题。我记得,Linux 的 NPTL 实现是用数万个线程测试的。如果这是您实现的最简单方法,那么它可能是正确的答案。

但是,高性能网络服务器和类似服务器通常改用事件驱动模型。考虑像 libevent 这样的图书馆.我确信有用于相同目的的 C++ 库。

我个人认为,没有一流延续性的语言,或者至少是协程,对于这类工作来说是糟糕的选择,但 C 语言家族是我们今天完成工作的方式,所以我们开始吧。 :-)

关于C++ 服务器 - 线程还是非线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13354553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com