首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2012-10-16 
C#中的线程为何会被抢占?C# codeusing Systemusing System.Threadingpublic class ThreadExample{public

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,单核运行说不定不会这样。

热点排行