当前位置: 首页 > news >正文

Unity中 JobSystem使用整理

Unity 的JobSystem允许创建多线程代码,以便应用程序可以使用所有可用的 CPU 内核来执行代码,这提供了更高的性能,因为您的应用程序可以更高效地使用运行它的所有 CPU 内核的容量,而不是在一个 CPU 内核上运行所有代码。
可以单独使用JobSystem,为了提高性能,可以和Burst 编译器一块使用,Burst 编译器改进了代码生成,从而提高了移动设备的性能并减少了电池消耗。
还可以将JobSystem与 Unity 的实体组件系统结合使用,以创建高性能的面向数据的代码。

概念:

单线程:一次执行一条指令,并且一次产生一个结果。加载和完成程序的时间取决于 CPU 需要完成的工作量。
多线程:利用了 CPU 在多个核心上同时处理多个线程的能力。这种情况下不是逐个执行任务或指令,而是同时运行任务或指令
什么是多线程? - Unity 手册
JobSystem:通过创建Job而不是线程来管理多线程代码,将创建的Job放入Job队列中等待执行,工作线程从Job队列中获取并执行Job,用依赖关系来确保Job用适当的顺序执行。
Job完成一项特定任务的一个小工作单位,会接收参数并对数据进行操作,可以是独立的,也可依赖其他作业完成之后才能运行。
Job依赖关系: 如果jobA依赖于jobB,系统将确保jobA不会在jobB完成之前开始执行。
什么是作业系统? - Unity 手册

优势:

1.多线程并行计算:利用多核CPU提升性能。
​2.无GC分配:使用 Native 容器避免托管堆分配。
​3.Burst 编译优化:生成高效原生代码(性能提升5-10倍)。

使用:

1.安装

通过Package Manager添加

通过Git URL地址搜索Job System包  
com.unity.jobs:Job System 的核心功能包。

搜索到Jobs包后点击右下角Import

2.JobSystem使用入门:

1.NativeContainer:

2.创建Job:

3.调度Job:

4.JobHandle 和依赖项:

5.ParallelFor Job:

6.ParallelForTransform Job:

3.注意事项:

1.不要从Job访问静态数据。
2.不要更新 NativeContainer 内容。
3.调用 JobHandle.Complete 以重新获得所有权。
4.在适当时间使用 Schedule 和 Complete 方法。
5.将 NativeContainer 类型标记为只读。
6.不要在Job中分配托管内存。

C# 作业系统提示和故障排除 - Unity 手册

未完待续。。。

参考链接:

什么是作业系统? - Unity 手册

ArtStation - Unity Job System in Practice. How we increased FPS from 15 to 70 in our game


http://www.mrgr.cn/news/97048.html

相关文章:

  • 学透Spring Boot — 007. 七种配置方式及优先级
  • 【蓝桥杯】第十五届C++B组省赛
  • MySQL-SQL-DDL语句、表结构创建语句语法、表约束、表数据类型
  • github合并多个commit message以及rebase解决文件冲突
  • 【蓝桥杯】算法笔记2
  • Javaweb后端AOP记录操作日志
  • 蓝桥杯冲刺
  • Springboot学习笔记4.1
  • Apache httpclient okhttp(1)
  • 哈希表+前缀和+滑动窗口高效查找——蓝桥杯例题
  • 3499 幸运数字
  • Unity2D:从零开始制作一款跑酷游戏!
  • 【MyBatis】深入解析 MyBatis XML 开发:增删改查操作和方法命名规范、@Param 重命名参数、XML 返回自增主键方法、数据库连接池和 MySQL 开发企业规范
  • 图解AUTOSAR_LINInterface
  • 认识 Promise
  • 算法题(114):矩阵距离
  • 【动态规划】线性dp——LIS和LCS
  • LeeCode 5. 最长回文子串
  • 计算机视觉算法实战——基于YOLOv8的行人流量统计系统
  • ARM------硬件程序开发