Unity Dots 如何做到多线程

2023-7-24

UnityDots的多线程是基于JobSystem + Entity command buffer + NativeContainer

1,JobSystem

JobSystem是Unity封装的多线程,相比 C#Thread,更加简化,链接如下

Job extensions | Entities | 1.0.11

2,Entity command buffer

2.1命令缓冲,一下对此概念简称ECB。

我们知道,以往在线程中,是不允许操作组件的,也就意味着很多数据无法修改。那么,Dots如何实现呢?

Dots 将命令储存在ECB,当此模块的线程全部完成工作后,在进行应用 (需要开发者手动)。

当然,还有一部分原因是,Unity对传统Mono的重做,即ECS (EntityCommandSystem)。

2.2 ECB 设计目标

是用来规避同步点,同步点的链接如下

Structural changes concepts | Entities | 1.0.11

3, NativeContainer

一种数据结构,类似于C# 中的List、Dictionary

要在Job线程中传递数据、储存计算结果,必须通过NativeContainer

同时,Burst 也需要 NativeContainer 类型的数据结构

链接如下:

Native container component support | Entities | 1.0.11

 Unity Collections package | Collections | 1.2.4

4,作者的话:

这里是把Dots多线程,所需的概念,罗列了一下,并且粘贴了很多超链接。

学习新的系统,确实需要补充大量的概念、并加以辅助练习、理解。

其中甚至出现,链接套链接,资料无穷无尽。

学者需要耐心。

提供一个好的资料途径,Youtube。

上面会有视频教程,配合自动翻译,大体能够理解。

国外的开发者,也会分版本、分章节、分难度的去讲解。视频简介,一般也有项目GitHub链接。

猜你喜欢

转载自blog.csdn.net/qq_35623058/article/details/131887852
今日推荐