【问题标题】:Efficiently handling timed events in a server有效处理服务器中的定时事件
【发布时间】:2009-10-17 12:43:59
【问题描述】:

在我的例子中,我有一个游戏服务器,CLR 线程池处理套接字,还有一个托管线程池用于其他东西。我试图弄清楚处理事件的最佳方法是什么,比如一个 npc 施法或在一段时间后消失。

我可以编写某种 Timer 包装器,为我想要执行的每个操作获取一个新的(托管)线程池线程,例如 new TimedEvent(1500, npc.Cast(Spells.FireBall));并让它检查系统时间,但是,我认为,有多个像这样运行的计时器,每个单独检查经过的时间是低效的。 某种调度程序线程会更好吗?

提前致谢。

【问题讨论】:

    标签: c# time event-handling threadpool


    【解决方案1】:

    看看UOX3 是如何做到这一点的,以防您不知道该服务器应用程序。这是一个 .Net/C# Ultima Online 服务器。

    关于你的具体问题。这取决于您期望的事件数量。如果您预计每秒数千次,则计时器/线程方式可能无法正常工作。

    【讨论】:

    • UOX3 的核心似乎是用 C++ 编写的,所以我猜你的意思是 RunUO :p 无论如何,在区域更新时检查事件的 SortedList(按到期时间/滴答声排序)听起来比我最初的提议?
    • 如果您有很多事件,那么列表方法听起来更可行。
    猜你喜欢
    • 2020-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 2012-11-04
    • 2019-04-16
    相关资源
    最近更新 更多