【入门】超级好理解的线程和进程,同步和异步

一:区分进程、线程、程序

程序: 软件在 硬盘 上的表示,称为 程序
进程:当你运行一个 软件 时,系统会加载 程序 到内存中,形成一个 进程 ;一个进程,有自己 独立 的内存区域;
多线程: 它是 软件和程序 的概念,它不是Unity的概念, 任何进程,都可以使用多线程 ;Unity也可以使用多线程,但有一些限制;

二:线程和进程的区别

         做个简单的比喻: 进程=火车, 线程=车厢。
         线程在进程下行进(单纯的车厢无法运行);

         一个进程可以包含多个线程(一辆火车可以有多个车厢);

        不同进程间数据很难共享(一辆火车上的乘客很难换到另外一辆火车,比如站点换乘);
         同一进程下不同线程间数据很易共享(A车厢换到B车厢很容易);

         进程要比线程消耗更多的计算机资源(采用多列火车相比多个车厢更耗资源);

         进程间不会相互影响,一个线程挂掉将导致整个进程挂掉(一列火车不会影响到另外一列火车,但是如果一列火车上中间的一节车厢着火了,将影响到所有车厢);

        进程可以拓展到多机,进程最多适合多核(不同火车可以开在多个轨道上,同一火车的车厢不能在行进的不同的轨道上);
        进程使用的内存地址可以上锁,即一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存。(比如火车上的洗手间)-"互斥锁" ;

        进程使用的内存地址可以限定使用量(比如火车上的餐厅,最多只允许多少人进入,如果满了需要在门口等,等有人出来了才能进去)-“信号量”。

三:创建线程的目的

       是为了建立 程序单独的执行路径,让多部分代码实现 同时执行。也就是说线程创建并执行需要给定线程要执行的任务。

四:同步和异步的概念

线程,进程,协程都是实现 异步 的一个方式;但它们之间也可以有 同步 的概念;

1)同步

            例如上图所示,烧水、洗脚、做饭依次进行,时间花费15s。
                                    
            同步 :任务之间 有序 ,函数需要返回,才能继续执行的函数,称为同步函数。

2)异步

             如上图所示,烧水、洗脚、做饭同时进行,时间花费6s。
            异步 调用者,不需要等待被调用的函数返回,可以继续向下执行;异步,也意味着
【不能认为他们之间有顺序关系】

3)异步里面有同步

         烧水和做饭是同时进行的,但是洗脚是在烧水完成后进行的,时间花费9s。

五:总结

1.进程和线程

                                    进程                                                     线程
每个 程序 ,都会开一个 进程                 一个进程,至少有一个 主线程
                                内存区域             执行内存区域代码 逻辑单元(干活的)
每个进程都以一个 主线程 来运行Main函数,作为 进程 的开始,主线程结束时,进程也就结束了;
一个进程,可以使用多个线程 来分工或者一起完成任务;
主线程外的线程,称为工作线程

2.前台线程和后台线程

主线程是前台线程,当一个进程,至少有一个前台线程在运行时,那么进程不会被销毁;否则,进程会被系统销毁并回收;
我们可以任意设置一个线程为后台还是前台;

3.线程的状态

非激活但已创建 :线程对象已经分配,但没有被系统调试执行;
运行状态 :线程被系统调用运行;
线程是为了执行任务,任务就是一个函数,也称为子程序。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值