C#基础篇——线程(一)

来源:互联网 发布:福建工程学院软件学院 编辑:程序博客网 时间:2024/06/05 15:03

灌水前言:一直以来想写自己的技术博客,一直没动手。这个作为我的开篇来讲讲吧

究其原因:

1.懒  总觉得技术博客看起来高深莫测,不愿深究,其实无论是技术博客还是其他什么事,你乍一看挺麻烦挺难的,进去了其实挺简单,而且现在的计算机提供了各种方便的功能

2.感觉自己技术不行,写上去丢人   其实看了好多的人说技术博客也是一个快速提升的过程,我也是抱着一部分提升的心态来的,一直以来都是自己埋头自己总结,写上来不说帮助别人,对自己提升应该还是有帮助的

好了,废话不多说,目前我的技术博客就从总结基础知识开始吧,后期会把之前自己基础方面的总结都放上来。

.先来理解几个基本定义

[线程]

[进程]

     何为进程,线程:计算机提供的一些功能,包括多个线程,多个线程协同进行

                           例:迅雷  就是多线程实现的网络进程,迅雷上面多部电影同时下载就是多个线程协同进行

[多线程]

    何为多线程:

                作用:用来处理资源的争夺,处理公共内存的数据

         应用方向:网络传输(后台任务)   不常规的逻辑更新(不包括画面更新,几乎所有的引擎都是渲染引擎)

[互斥锁](Mutex)

      何为互斥锁:多个线程都要用到公共内存数据,为解决公共数据使用冲突,当前线程使用数据的时候使用互斥锁                               将数据进行上锁,其他线程使用数据的话只能等待,只有当当前线程使用完后将公共数据释放其他                               线程才能使用。

                            即:公共数据没有线程使用的时候才可以使用

                 作用:解决多线程开发中公共内存数据的使用冲突

[信号量](Semaphore)

     何为信号量:公共区域有多个线程同时访问的时候,要有一定数量的限制,处于公共线程访问的线程数量就是信                              号量

                  作用:与互斥锁的功能一样    

                  注意:互斥锁是信号量唯一的特殊情况

[注意]

        在这里说下Unity中的协程

                1.Unity中的API不可以在分线程中使用(自身开辟的都是分线程)

                   主线程是程序启动的时候自动启动的,实现类似在分线程中获取组件就必须使用协程

                2.在Unity中尽可能使用协程来解决分线程的功能

                3.开发方向提供协调机制   一方面防止线程和线程之间产生冲突,另一方面允许线程和献策好难过之间的资                    源共享(此处推荐使用互斥锁)

案例:

开启线程有两种方式(有参数和没有参数)
 线程需要手动控制开启
 lock(参数)  参数只能是引用数据类型  不能是基本数据类型
 分线程中  线程和线程之间的运行顺序不可估计



注意:主线程用Thread进行访问,不用我们停止或者释放线程,主线程由.NET Framework公共语言运行库自动完成的


第一次先写这么多,线程还是刚开始总结,后面会把之前总结的都慢慢补上。