C# 线程(一)

线程定义: 线程是进程中的实际运作单位,进程的基本单元;一个进程可以包含若干个线程,某个程序开始时执行时,进程的第一个线程被默认为该进程的主线程。
线程之间的联系: 一个进程中可以创建多个线程,多线程之间是迸发执行的,一个线程可以终止其他线程或者开启其他线程。但是每个线程之间就算是共享了数据,他们也都拥有自己独立的堆栈空间和执行顺序。
多线程的优点: :每个线程都有独立的堆栈空间,多线程可可同时执行多个功能,提高进程的运行效率。目前电脑都是多核多CPU的,一个CPU在同一时刻只能运行一个线程,但是多个CPU在同一时刻就可以运行多个线程。
多线程的缺点: 线程太多了不好对其管理控制,容易让程序崩溃,虽然多线程提高了运行效率,但是同时也提高了占用内存的空间。

.

线程用到的回调:(随时补充)

首先要引用:System.Threading
线程类:Thread

创建一个新线程:
Thread newThread=new Thread(new ThreadStart());*
注:ThreadStart是一个委托,可传入该线程的执行事件

thread.Start(): 让一个线程开始执行
thread.Abort(): 终止线程的运行
Thread.Sleep(float timer): 使线程挂起一段时间,timer=1000就相当于该线程在此处暂停1s后再继续执行

开启一个线程的代码,将该代码复制到脚本中挂载到任意物体上


	Thread thread_Print;//这是负责打印文字的线程

    Thread thread_Abort;//这是一个终止线程

    private void Start()
    {
        EnableThread();
    }

    //开启线程
    void EnableThread()
    {
        //首先要创建一个线程,执行文字的打印
        thread_Print = new Thread(new ThreadStart(PrintWord));

        //然后调用Start函数启动该线程
        thread_Print.Start();

        //我们再来创建一个终止线程,在30s之后,停止打印文字的线程
        thread_Abort = new Thread(new ThreadStart(() =>
        {
            Thread.Sleep(30000);

            print("停止线程的执行!");

            //文字打印的线程执行停止
            AbortThread();
        }));

        //别忘了启动终止线程
        thread_Abort.Start();
    }

    /// <summary>
    /// 每隔5秒循环打印文字
    /// </summary>
    void PrintWord()
    {
        while (true)
        {
            print("Good Boy!");
            Thread.Sleep(5000);
        }
    }

    /// <summary>
    /// 终止线程的执行
    /// </summary>
    void AbortThread()
    {
        //终止文字打印线程的执行
        if (thread_Print != null)
        {
            thread_Print.Abort();
            thread_Print = null;
        }

        //终止 控制停止的线程
        if (thread_Abort != null)
        {
            thread_Abort.Abort();
            thread_Abort = null;
        }
    }

运行后的结果如下图:
在这里插入图片描述
程序开始运行会打印“Good Boy”,每隔5s打印一次,直到30s后线程关闭。

发布了14 篇原创文章 · 获赞 0 · 访问量 416

猜你喜欢

转载自blog.csdn.net/a0_67/article/details/104950965
今日推荐