1
namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            Thread t = new Thread(() => WriteY("11"));
            t.Start();
            t.IsBackground = true;
            Thread.CurrentThread.Priority = ThreadPriority.Highest;
            for (int i = 0; i < 1000; i++) Console.Write("x");
            System.Console.ReadLine();
        }
        static void WriteY(string ss)
        {
            for (int i = 0; i < 1000; i++)
                Console.Write(ss);
            System.Console.ReadLine();
        }
    }
}

こんにちは、「x」スレッドの優先度が最も高いため、最初に完了する必要があると思います。しかし、結果として、それらはまだ切り替え中です。

4

2 に答える 2

0

使用可能な PC に複数の CPU(-core) がある場合、これは「正常」です。スレッド 1 は CPU/コア 1 で実行され、スレッド 2 は CPU/コア 2 で実行されます
。使用可能なコアよりも多くのスレッドを使用するか、たとえば Prime95 をバックグラウンドで実行して CPU を 100% 使用すると、違いが生じるはずですが、<= スレッドの場合、(使用可能な) CPU/corse スケジューラーは各スレッドを独自のコアで実行し、 (もし彼らが~同じことをしているなら)彼らは同じ時間に終わります...

于 2013-08-05T07:21:50.433 に答える