C# .Net应用程序的Cpu线程使用率

C# .Net应用程序的Cpu线程使用率,c#,multithreading,iis,cpu,C#,Multithreading,Iis,Cpu,嗨,我正在阅读关于线程和IIS的文章。它被告知每个请求都由cpu上的一个线程执行。每个逻辑处理器可以有一个线程。所以我试过了。我的计算机有4个逻辑处理器,我运行一个控制台应用程序,该程序使用此代码创建了4个任务 Task raskRun1 = new Task(() => run1()); raskRun1.Start(); Task raskRun2 = new Task(() => run2()); raskRun

嗨,我正在阅读关于线程和IIS的文章。它被告知每个请求都由cpu上的一个线程执行。每个逻辑处理器可以有一个线程。所以我试过了。我的计算机有4个逻辑处理器,我运行一个控制台应用程序,该程序使用此代码创建了4个任务

        Task raskRun1 = new Task(() => run1());
        raskRun1.Start();

        Task raskRun2 = new Task(() => run2());
        raskRun2.Start();

        Task raskRun3 = new Task(() => run3());
        raskRun3.Start();

        Task raskRun4 = new Task(() => run4());
        raskRun4.Start();
每个人都有这样的寓言

    public static void run1()
    {
        for (int i = 0; i < 500; i++)
        {
            Console.WriteLine("1" + i.ToString());
            Thread.Sleep(1000);
        }

    }
publicstaticvoidrun1()
{
对于(int i=0;i<500;i++)
{
Console.WriteLine(“1”+i.ToString());
睡眠(1000);
}
}
我所期望的是,在运行这个应用程序时。我无法加载我的区域设置web应用程序。但它正在加载


我知道我的想法是错误的,但你能解释一下这种情况吗?

每个逻辑处理器可以在任何特定时刻运行一个线程,但可以通过为每个线程分配时间片来并发运行多个线程

多任务操作系统将可用处理器时间分配给需要它的进程或线程。该系统设计用于抢占式多任务处理;它为执行的每个线程分配处理器时间片。当前执行的线程在其时间片过期时挂起,允许另一个线程运行。当系统从一个线程切换到另一个线程时,它保存抢占线程的上下文,并恢复队列中下一个线程的保存上下文

时间片的长度取决于操作系统和处理器。因为每个时间片都很小(大约20毫秒),所以多个线程似乎同时执行