gpt4 book ai didi

C++ IOCP 服务器容器信息

转载 作者:太空宇宙 更新时间:2023-11-04 12:05:25 25 4
gpt4 key购买 nike

我一直在脑海中传递一些关于如何在保持 KISS 的同时使用 IO 类型的架构实际包含大量连接的想法。通过网络上的示例,似乎大多数人都使用带有 CONTAINING_RECORD 的双/单链表。而且,作为 IO 服务器的新手(尽管每天都在进步),我也将链表容器用于 IO 架构。

我的问题是,为什么我不能只构建一个大数组并使用 CONTAINING_RECORD,而不是为我的连接使用单/双链表?我可以使用 STL vector 吗?那行得通吗?此外,还有哪些其他类型的容器最适合大型 IO 服务器。

我正在为我的游戏服务器重写服务器架构(经过多次修改),这次我想朝着正确的方向前进,因为我不想在不久的将来再次重写它。

感谢您的宝贵时间和回复。

编辑:目前我的服务器架构是(简而言之):

Main thread listening and accepting -> Pass over the socket into a container.
Worker threads(2-3) grab IO events for the container of sockets.
Worker threads Read/Write Data on that container.

主线程和工作线程都使用链表。我想摆脱这个。

最佳答案

您的“连接列表”可能会从任何位置删除,而不仅仅是结尾。对于 std::vector,删除中间的元素是一个 O(N) 操作,但对于链表它可以是 O(1)。 (对于单链表,这不是微不足道的,可能需要一个不方便的 API)。

std::map 可能是一个有趣的选择,因为它提供 O(log N) 查找和删除元素。

关于C++ IOCP 服务器容器信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12364139/

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