进程:进程是运行中的程序,而一个进程由至少一个线程所组成的。

线程:线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。

PS:进程是系统分配各种资源的单位,而线程则是操作系统分配CPU的基本单位。

.NET中,线程由Thread类创建,而Thread类重要的方法:

Start():启动线程;

Sleep(int):静态方法,暂停当前线程指定的毫秒数;

Abort():终止一个线程;

Suspend():挂起线程,以后还可恢复;

Resume():恢复被Suspend()方法挂起的线程的执行。

使用Thread类创建线程时,只需提供线程入口,线程入口是通过ThreadStart代理(delegate)来提供的,其定义为:public delegate void ThreadStart(),由此定义可知,创建线程对象必须传给它一个方法。通俗的来说是:每个线程都对应着一个特定的线程函数,线程的执行体现着线程函数的执行。

如下简单创建线程:

using System;
using System.Threading;

namespace MultiThreads
{
	class Program
	{
		public static void Main(string[] args)
		{
			Console.WriteLine("Main Thread");
			
			AssistThread assistThread=new AssistThread();
		    //通过ThreadStart委托一个线程函数
			Thread aThread=new Thread(new ThreadStart(assistThread.threadMethod));
			aThread.Start();
			
			Console.ReadKey(true);
		}
	}
	class AssistThread
	{
		public void threadMethod()
		{
			int num=0;
			while(num<10)
			{
				Console.WriteLine("AssistThread's threadMethod Start!");
				num++;
			}
		}
	}
Thread.ThreadState 属性:

ThreadState 属性的取值如下:

Aborted:线程已停止;

AbortRequested:线程的Thread.Abort()方法已被调用,但是线程还未停止;

Background:线程在后台执行,与属性Thread.IsBackground有关;

Running:线程正在正常运行;

Stopped:线程已经被停止;

StopRequested:线程正在被要求停止;

Suspended:线程已经被挂起(此状态下,可以通过调用Resume()方法重新运行);

SuspendRequested:线程正在要求被挂起,但是未来得及响应;

Unstarted:未调用Thread.Start()开始线程的运行;

WaitSleepJoin:线程因为调用了Wait(),Sleep()或Join()等方法处于封锁状态;

 

线程的优先级:
由高到低分别是Highest,AboveNormal,Normal,BelowNormal,Lowest.  默认为:ThreadPriority.Normal

相关文章:

  • 2021-11-08
  • 2021-06-12
  • 2021-12-08
  • 2021-08-05
  • 2021-07-14
  • 2021-08-12
  • 2022-01-15
  • 2022-03-06
猜你喜欢
  • 2021-10-02
  • 2021-10-30
  • 2021-12-21
  • 2021-11-29
  • 2021-05-24
  • 2021-08-18
相关资源
相似解决方案