欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C#学习篇之基础回顾(16)----- 进程和多线程

程序员文章站 2022-05-02 10:03:13
...

进程

进程(Process)是Windows系统的一个基本概念。一个应用程序在操作系统中运行被视为一个进程,进程可以包括一个或多个线程。 进程之间是相对独立的,一个进程无法访问另一个进程的数据(除非使用分布式计算方式),一个进程运行失败也不会影响另一个进程。

线程

线程是进程中的基本执行单元,是轻量级进程,也是操作系统分配CPU时间的基本单位。一个进程可以包含多个线程,在进程入口执行的第一个线程被视为进程的主线程。如在C#程序中,都是以Main()方法作为程序入口,调用此方法系统就会创建一个主线程。

多线程

多线程可以同时完成多个任务,按照任务优先级来进行程序性能的优化,如将需要占用大量时间的任务将时间让给其他任务。

从宏观角度来看,CPU可以实现多线程,但是实际上一个CPU在同一时刻只能运行一个线程,由于CPU运行速度很快,所以看起来在同一时刻执行了不同操作。当然随着硬件的发展,现在的电脑都是多核CPU,所以能够实现同一时刻运行多个线程。

线程的生命周期开始于System.Threading.Thread类的对象被创建时,结束于线程被终止或完成执行时。

在创建线程之前首先需要引用System.Threading命名空间,然后通过扩展 Thread 类进行创建,扩展的 Thread 类调用Start()方法来开始线程的执行。创建一个调用无参数方法的线程如下:

        static void Name()
        {
            Console.WriteLine("这是线程");
        }
        static void Main(string[] args)
        {
            Thread thread = new Thread(new ThreadStart(Name));
            thread.Start();
            Console.ReadLine();
        }

运行结果:这是线程

如果需要创建一个带参数方法的线程需要修改为ParameterizedThreadStart,ParameterizedThreadStart是一个有参的、返回值为void的委托,且参数必须为Object类型,定义如下:

        static void Name(Object obj)
        {
            Console.WriteLine(obj);
            Console.WriteLine("这是线程");
        }
        static void Main(string[] args)
        {
            Thread thread = new Thread(new ParameterizedThreadStart(Name));
            thread.Start("这是参数");
            Console.ReadLine();
        }

运行结果:这是参数

                  这是线程

多线程测试

        static void OutPutA()
        {
            for (int i = 0; i < 1000; i++)
            {
                Console.Write("A");
            }
        }
        static void OutPutB()
        {
            for(int i=0;i<1000;i++)
            { 
                Console.Write("B");
            }
        }
        static void Main(string[] args)
        {
            Thread thread = new Thread(OutPutA);
            thread.Start();
            Thread thread1 = new Thread(OutPutB);
            thread1.Start();
            Console.ReadLine();
        }

运行结果:

C#学习篇之基础回顾(16)----- 进程和多线程

相关标签: 线程