0

我在 XNA 中的线程有一个非常奇怪的问题。我正在使用 Q9400 使用 PC。

下面的代码是在Update()XNA 的函数中启动的。

        Stopwatch sw = new Stopwatch();

        Thread[] threads = new Thread[2];
        threads[0] = new Thread(() => Thread_UpdateDoodadsMovable(gameTime));
        threads[1] = new Thread(() => Thread_UpdateDoodadsRotated(gameTime));
        sw.Start();
        foreach (Thread t in threads)
        {
            t.Start();
        }
        foreach (Thread t in threads)
        {
            t.Join();
        }

        sw.Stop();
        Console.WriteLine("A " + sw.ElapsedTicks);
        sw.Reset();

由于注释了代码,两个线程现在都是“空的”:

    public void Thread_UpdateDoodadsRotated(GameTime gametime)
    {
        // level.UpdateDoodadsRotated(gameTime);
    }
    public void Thread_UpdateDoodadsMovable(GameTime gametime)
    {
       // level.UpdateDoodadsMovable(gametime);
    }

回报在 7000 到 10000 之间。sw.ElapsedTicks有人可以向我解释为什么会这样吗?

我知道创建线程而不是从中获取线程并不是ThreadPool性能方面的最佳方式,但线程创建所需的时间比ElapsedTicks返回要少得多。

4

0 回答 0