进程是操作系统中作为资源拥有的基本单位。线程作为系统调度和分派的基本单位。一个程序在运行时大多都只开辟一个进程,一个进程可以包含有一个或多个线程。线程是进程中的基本执行流,每个线程都有自己专属的寄存器(程序计数器,栈指针等),共享进程中的资源,不同的线程可以执行同样的代码。
线程的引入显著提高了系统的并发力度。在同一进程中,线程的切换不会引发进程的切换,但从一个进程中的线程切换到另一个进程中的线程时,将会引发进程的切换。而进程切换消耗cpu的资源远远的大于线程的切换。
Thread类提供了创建并控制线程,设置其优先及并获得其状.态的方法。在使用该类是需要引用System.Threading命名空间。下面我们创建一个简单的线程:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace 多线程
{
public class ThreadSimple
{
void TreadList()
{
Thread thread = new Thread(test);
}
private void test()
{
}
}
}
在Thread类的定义中我们可以看到,该类包含有4个重载的构造函数。而传入 的参数是一个ThreadStart委托。由于VS的简化,我们可以直接写方法名。
现在我们有了一个线程,但是我们还没有启动它,怎样启动它呢?
我们可以根据所学的英语进行猜想线程启动的方法,如start或者open,当然这里是start
我们可以在Thread thread = new Thread(test);后面添加一句thread.Start();来启动我们的线程.
在Thread这个类以对象的方式提供了一些必要的实例成员,其中下面这些是比较常用的:
1. IsAlive:判断线程是否处于活动状态
2. Name:线程的名称
3. Priority: ThreadPriority枚举类型,代表程序的优先级
4. ThreadState: ThreadState枚举类型,代表线程的状态。