【多线程-线程的概念】

一.什么是线程:

线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。

线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。

二.线程和进程的关系:

通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度,从而显著提高系统资源的利用率和吞吐量。

三.理解:

    /// <summary>
    /// 单线程应用
    /// </summary>
   class Program
   {
     static void Main(string[] args)
     {
        Console.WriteLine("进入主线程");
        User u = new User("小刚");
        u.Getshow();
        Console.WriteLine("主线程结束");
     }
   }
    public class User
    {
        private string name;
        public User(string name)
        {
            this.name = name;
        }
        public void Getshow()
        {
            Console.WriteLine("Name=>" + name);
        }
    }
上面的控制台应用程序,只包含一个线程,这个线程是由系统自动创建的。即主线程.从入口点Main()方法开始主线程,进行顺序控制流程,程序到达GetShow时候线程转到该方法内部执行,当该方法内部执行完成之后在回到Main方法里面。继续顺序执行下面的输出Console.WriteLine("主线程结束");执行流程如下。
【多线程-线程的概念】_第1张图片

现在进行多线程执行GetShow里面的行为,不采用主线程执行:

    /// <summary>
    /// 多线程应用
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("进入主线程");
            User u = new User("小刚");
            Thread subthread = new Thread(new ThreadStart(u.Getshow));//创建新线程
            subthread.Start(); //开启线程
            Console.WriteLine("主线程结束");
        }
    }

    public class User
    {
        private string name;
        public User(string name)
        {
            this.name = name;
        }
        public void Getshow()
        {
            Console.WriteLine("Name=>" + name);
        }
    }
在主线程里面,新开了一个线程,去执行Getshow方法里面的操作。主线程创建新的线程以后,不会等待Getshow里面的代码执行完毕。而是直接执行后面的代码:Console.WriteLine("主线程结束");

【多线程-线程的概念】_第2张图片


你可能感兴趣的:(多线程,C#)