读书人

C#中的线程为啥会被抢占

发布时间: 2012-10-16 09:57:37 作者: rapoo

C#中的线程为何会被抢占?

C# code
using System;using System.Threading;public class ThreadExample{    public static void ThreadProc()    {        for (int i = 0; i < 10; i++)        {            Console.WriteLine("ThreadProc: {0}", i);               }    }    public static void Main()    {        Console.WriteLine("Main thread: Start a second thread.");        Thread t = new Thread(new ThreadStart(ThreadProc));        t.Start();        for (int i = 0; i < 4; i++)        {            Console.WriteLine("Main thread: Do some work.");            Thread.Sleep(0);        }        Console.Read();    }}

运行结果

我想问下既然Windows是抢占式多任务系统,那么应该在ThreadProc()抢到CPU后就会让它一直执行下去,直到它自身想停下来(如等待输入等)或运行结束为止,可是为什么在上面的程序中还是让Main Thread给抢占了呢?

[解决办法]
探讨
我想问下既然Windows是抢占式多任务系统,那么应该在ThreadProc()抢到CPU后就会让它一直执行下去,直到它自身想停下来(如等待输入等)或运行结束为止,可是为什么在上面的程序中还是让Main Thread给抢占了呢?

[解决办法]
楼主你确认自己真的知道 抢占式多任务系统 是什么意思吗?
抢到了就不放?那不就是最简单的串行执行吗,还要线程干嘛
[解决办法]
OMG,线程的原理--------------百度之--------------
[解决办法]
如果必须先执行完这个线程,这样有死循环线程就只能关电源了,windows就不能叫多任务系统了。
而且main线程能被抢,ThreadProc当然也能被抢。

现在都是多核cpu,单核运行说不定不会这样。

读书人网 >C#

热点推荐