NativeContainer(本地容器)
Unity Safety system(安全系统)数据拷贝的缺点之一,是将每个Job的计算结果也相互隔离,为了解决这个限制,需要将Job结果存储在一种共享内存类型的容器NativeContainer。
什么是NativeContainer?
NativeContainer是一个对Unity本地内存进行相对安全的封装并且接受管理的值类型。在使用Unity JobSystem时,NativeContainer允许job和主线程访问共享内存,而不是通过内存拷贝。
有哪些NativeContainer可以用?
Unity提供了一个NativeContainer叫做NativeArray,你可以通过NativeSlice从特定位置开始操作固定长度操作NativeArray的数据子集。
注意:Unity ECS系统拓展了Unity.Collection命名空间下的NativeContainer类型:
* NativeList - 可变长度的NativeArray
* NativeHashMap - 键值对
* NativeMultiHashMap - 一键多值的哈希表
* NativeQueue - 先入先出列表
NativeContainer和Safety System之间的关系
SF是在所有NativeContainer类型中内置的,它追踪了是谁在读写NativeContainer