我在 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
返回要少得多。