Dots之路-核心包_JobSystem_01
前言
本文为 Metaverse大衍神君 Dots 之路的记录。
仓库地址 RoadToDotsTutorials
如何将主线程逻辑转移到 Jobs 工作线程中执行
TODO:
Unity Jobs System 是什么
- 包含 C# Jobs System 与 C++ Jobs System
- 利用多核计算平台来简单安全的编写与执行多线程代码
- **既可以与 ECS 结合使用也可以单独使用
- 不需要关心平台 CPU 核心资源情况
C# Jobs System
- No Reac Condition
- 只访问数据的拷贝
- 或者可以转换一段 buffer 的所有权给这个 Job(Native Container)
- 使用和 Unity 引擎内 C++ JobSystem 系统的代码
- 引擎和游戏线程之间没有上下文切换的开销
Job 程序可使用数据类型
Blittable Typs
因为 C# 与 C++ 下的内存管理和值的类型定义不同。
![[Pasted image 20250925131124.png]]
NativeContainer
- 非托管内存
- 有 DisposeSentinel 来避免内存泄漏错误
- 有 AtomicSafetyHandle 来追踪所有权与权限
- 需要手动 Dispose 释放
- 没有引用返回,会在 C# 7 中支持
- Annocation Types
- Persistent: 长生命周期内存
- TempJob:只在 Job 中存在的短生命周期,4 帧以上会受到警告
- Temp: 一个函数返回前的短生命周期
Job 的调度方式
- Run:主线程立即顺序执行
- Schedule:单个工作线程或主线程,单个 Job 顺序执行
- ScheduleParalledl:在多个工作线程上同时执行,性能最好,但多个线程访问同一数据时可能会发生冲突
Dots之路-核心包_JobSystem_01
https://lshgame.com/2025/09/27/Dots_Road_Core_Package_JobSystem_01/
