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链接。