这个 C# 增量时间循环是否适合 运行 服务器端 60fps 的模拟?

Would this C# delta time loop be good for running a simulation at 60fps on server side?

对于服务器端每秒 60 次逻辑更新的 运行 模拟,您认为以下 suffice/be 足够稳定吗?这不是实时物理,而是一种温和的动作 RPG 类型的多人游戏。我不认为 Thread.Sleep 从我读过的内容来看是个好主意,但不确定如何防止它在这个循环中消耗不必要的 CPU 周期。

class Program
{
    static void Main()
    {
        long fps = 60;
        long interval = 1000 / fps * 10000;
        long ticks, delta;
        long prevTicks = DateTime.Now.Ticks;
        long accum = 0;

        while (true)
        {
            ticks = DateTime.Now.Ticks;
            delta = (ticks - prevTicks);
            prevTicks = ticks;

            accum += delta;
            if (accum >= interval)
            {
                // update logic
                Console.WriteLine(accum);

                accum -= interval;
            }

            Thread.Sleep(0);
        }
    }
}

根据使用“累加器”的经验,累加器只在物理模拟中有用,累加器使模拟的物理更准确,但代价是当循环 运行 缓慢时渲染更卡顿(帧率更低) ,我还建议使用双打而不是长。