gpt4 book ai didi

c++ - 单例的每个核心设计的 IO 服务

转载 作者:太空宇宙 更新时间:2023-11-04 13:51:53 26 4
gpt4 key购买 nike

我目前正在开发游戏服务器,目前我有一个设计问题。

游戏服务器具有世界级(它是单例),当我从单个 I/O 服务更改为每个内核的 I/O 服务时,我认为我应该在我的世界级中使用互斥锁。因为来自客户端的数据包处理程序有时会使用 World 的函数执行操作。

有没有办法在那个单例中避免互斥?

最佳答案

您可以使用事件对象模式。

所以让 World 实现成为一个事件对象,实际上在它自己的线程上运行所有操作。

使用 Boost Asio 的事件对象模式示例在这里:boost::asio and Active Object

让 World 成为事件对象是否(性能方面)适合您,我无法判断。我有一种感觉,你不应该/简单地/不从多个线程访问 World,而是只在不需要锁来协调的后台运行计算密集型的东西,或者在锁开销不显着的地方。

在我的 comment here 我展示了一种使用无锁队列实现分派(dispatch)作业的替代方法。

关于c++ - 单例的每个核心设计的 IO 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23168939/

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