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