进行、线程、携程;同步,异步加载


进程、线程、携程摘抄自 码上就搞定

同步,异步加载摘抄自 京城下了一场大雪


进行、线程、携程

总览总述

进程

进程组成定义

一般由程序、数据集合和进程控制块三部分组成。

  • 程序用于描述进程要完成的功能,是控制进程执行的指令集;
  • 数据集合是程序在执行时所需要的数据和工作区;
  • 程序控制块(Program Control Block,简称PCB),包含进程的描述信息和控制信息,是进程存在的唯一标志。

进程特性:

  • 动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;

  • 并发性:任何进程都可以同其他进程一起并发执行;

  • 独立性:进程是系统进行资源分配和调度的一个独立单位;

  • 结构性:进程由程序、数据和进程控制块三部分组成

    作者:码上搞定
    来源:简书

线程

线程背景

  • 在早期的操作系统中并没有线程的概念,进程是能拥有资源和独立运行的最小单位,也是程序执行的最小单位。
  • 一个进程可以有一个或多个线程,各个线程之间共享程序的内存空间(也就是所在进程的内存空间)。

进程线程 构成区别

  • 一个标准的线程由线程ID、当前指令指针(PC)、寄存器和堆栈组成。
  • 而进程由内存空间(代码、数据、进程空间、打开的文件)和一个或多个线程组成。

进程和线程 区别

  • 线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;
  • 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;
  • 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见;
  • 调度和切换:线程上下文切换比进程上下文切换要快得多。

携程

携程与线程

  • 线程的切换由操作系统负责调度,协程由用户自己进行调度,因此减少了上下文切换,提高了效率。
  • 线程的默认Stack大小是1M,而协程更轻量,接近1K。因此可以在相同的内存中开启更多的协程。
  • 由于在同一个线程上,因此可以避免竞争关系而使用锁。
  • 适用于被阻塞的,且需要大量并发的场景。但不适用于大量计算的多线程,遇到此种情况,更好实用线程去解决。

携程 线程区别

在这里插入图片描述

同步加载,异步加载、懒加载、预加载

unity异步加载

  1. 异步加载新游戏场景,当新场景加载完成后进?入新场景并且销毁之前的场景。
    Application.LoadLevelAsync (“XXX”);
  2. 同样异步加载新场景,新场景加载完毕后,保留之前场景的游戏对象,并且进入新场景。
    Application.LoadLevelAdditiveAsync ("XXX ");

unity同步加载

  1. 读取新关卡后立即切换,其参数为所读取新关卡的名称或索引。
    Application.LoadLevel ("XXX ");
  2. 加载一个新的场景,当前场景不会被销毁。
    Application.LoadLevelAdditive ("XXX ");
    XXX可以是场景名,也可以是加载场景的序号

相关懒加载和预加载可参考:书虫和泰迪 方便理解记忆。

  • 总结:
    同步加载:在主线程中进行加载
    异步加载:单独开辟一个加载的线程用来加载资源,不影响主线程的进行
    协程可以代替线程,但协程不是多线程,只是在模拟多线程。
    unity提前加载场景避免场景卡顿:协程异步加载场景
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值