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